diff --git a/src/birl_ffi.erl b/src/birl_ffi.erl index 0f1abaa..f6577e8 100644 --- a/src/birl_ffi.erl +++ b/src/birl_ffi.erl @@ -34,11 +34,11 @@ now() -> os:system_time(microsecond). local_offset() -> Timestamp = erlang:timestamp(), - {{_, _, LD}, {LH, LM, _}} = calendar:now_to_local_time(Timestamp), - {{_, _, UD}, {UH, UM, _}} = calendar:now_to_universal_time(Timestamp), + {{LY, LN, LD}, {LH, LM, _}} = calendar:now_to_local_time(Timestamp), + {{UY, UN, UD}, {UH, UM, _}} = calendar:now_to_universal_time(Timestamp), if LD == UD -> (LH - UH) * 60 + LM - UM; - LD > UD -> (23 - UH) * 60 + (60 - UM) + LH * 60 + LM; + LD > UD orelse LN > UN orelse LY > UY -> (23 - UH) * 60 + (60 - UM) + LH * 60 + LM; LD < UD -> -((23 - LH) * 60 + (60 - LM) + UH * 60 + UM) end.