Is Yukon part of Canada/Mountain? Regards, Sundar On Wed, May 20, 2020 at 8:47 PM Brian Inglis < Brian.Inglis@systematicsw.ab.ca> wrote:
On 2020-05-20 05:32, Sundar Sarma wrote:
According to the latest 2020a tz update: Canada's Yukon, represented by America/Whitehorse and America/Dawson, advanced to -07 year-round, beginning with its spring-forward transition on 2020-03-08, and will not fall back on 2020-11-01. We have written a test cases like below for canada yukon timezone. We imported new 2020a tz into our environment. Our code seems correct but test cases are failing. So we found that there is wrong in Iana tz side. Please check and correct us. This is the below code we have written. @Test public void doesNotFallBackToMinus8InDawsonNovember2020() { DateTimeZone timezone = DateTimeZone.forID("America/Dawson"); Instant dayAfter = new DateTime(2020, 11, 2, 0, 0, timezone)-------> on 2nd nov 00:00:00 .withLaterOffsetAtOverlap() .toInstant(); Instant day = new DateTime(2020, 11, 1, 0, 0, timezone)------> on 1 st nov 00:00:00 .withLaterOffsetAtOverlap() .toInstant(); long dayAfterOffset = timezone.getOffset(dayAfter.getMillis()); int dayAfterHours = (int) TimeUnit.MILLISECONDS.toHours(dayAfterOffset); long offsetOnDay = timezone.getOffset(day.getMillis()); int hoursOnDay = (int) TimeUnit.MILLISECONDS.toHours(offsetOnDay); assertEquals(hoursOnDay, dayAfterHours); -------> here we are getting error: java.lang.AssertionError: expected:<-7> but was:<-8> } The above test case according to your update (will not fall back on 2020-11-01) is correct. But test case is failing. Could you please clarify us that is there anything wrong from IANA tz. If not how can i write my test case according to that?
For a start, you must always take account of the summer transition times forward and back. Across Canada, times change at Sunday 02:00 local time: in March, as each time zone hits 02:00, it becomes 03:00; in November, as each time zone hits 02:00, it becomes 01:00:
$ zdump -Vc2020,2021 Canada/Mountain | sed 's/\(Sun\).*\1/\1/' Canada/Mountain Sun Mar 8 01:59:59 2020 MST isdst=0 gmtoff=-25200 Canada/Mountain Sun Mar 8 03:00:00 2020 MDT isdst=1 gmtoff=-21600 Canada/Mountain Sun Nov 1 01:59:59 2020 MDT isdst=1 gmtoff=-21600 Canada/Mountain Sun Nov 1 01:00:00 2020 MST isdst=0 gmtoff=-25200
so to be sure, you need to check on or after each transition, as you will have ambiguous times on Sunday in March between 01:00 and 02:00, and in November between 02:00 and 03:00. In both cases, you could check on or after Sun 03:00. Checking at 12:00 noon is often chosen to be safe regardless of actual transition times, which could vary from 00:00 to 06:00. Similarly, checks are often done on December 31 and June 30 to avoid being near any northern or southern hemisphere transition dates. However in recent years Islamic countries have started to reset summer time changes during Ramadan, which can occur any time in the Gregorian calendar.
-- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. [Data in IEC units and prefixes, physical quantities in SI.]