From 7985f9e74f1b92c6d3190491dbda1d7151543b36 Mon Sep 17 00:00:00 2001 From: aj Date: Fri, 12 Nov 2010 00:17:20 -0800 Subject: [PATCH] zone end projection was buggy, since it didn't normalize dates before passing them on (required for ezic_date:all_times/1) --- src/ezic_zone.erl | 6 ++++-- test/ezic_zone_tests.erl | 5 +++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ezic_zone.erl b/src/ezic_zone.erl index ebba56b..ef662dd 100644 --- a/src/ezic_zone.erl +++ b/src/ezic_zone.erl @@ -80,12 +80,14 @@ offset_sec(Zone) -> -% returns the UTC datetime projected for zone end (given current DST Offset) +% returns ALL datetimes projected for zone end (given current DST Offset) project_end(#zone{until=Until, gmtoff=Offset}, DSTOffset) -> - ezic_date:all_times(Until, Offset, DSTOffset). + NUntil= ezic_date:normalize(Until), + ezic_date:all_times(NUntil, Offset, DSTOffset). % returns just the UTC datetime projected for zone end project_end_utc(Zone=#zone{}, DSTOffset) -> +% ?debugVal(Zone), {_,_,UTCDatetime}= project_end(Zone, DSTOffset), UTCDatetime. diff --git a/test/ezic_zone_tests.erl b/test/ezic_zone_tests.erl index 39789e1..03a10e1 100644 --- a/test/ezic_zone_tests.erl +++ b/test/ezic_zone_tests.erl @@ -31,6 +31,11 @@ project_end_utc_test_() -> ezic_zone:project_end_utc( #zone{until={{2010,11,10},#tztime{time={16,20,0}, flag=u}}, gmtoff={-7,0,0}} , {1,0,0})) + + + %% previously failing for "Asia/Irkutsk" + , ?_assertEqual({{1879,12,31},{17,2,40}}, ezic_zone:project_end_utc( + #zone{until={1880,1,1}, gmtoff={6,57,20}}, {0,0,0})) ].