We have an internal CI server that does daily builds of corefx on rhel.8.
Since 24 sept, System.Runtime.Tests is failing on IsDaylightSavingTime_CasablancaMultiYearDaylightSavings.
I haven't looked further into this yet.
pushd /home/tester/corefx/artifacts/bin/System.Runtime.Tests/netcoreapp-Unix-Debug
/home/tester/corefx/artifacts/bin/testhost/netcoreapp-Linux-Debug-x64/dotnet exec --runtimeconfig System.Runtime.Tests.runtimeconfig.json xunit.console.dll System.Runtime.Tests.dll -xml testResults.xml -nologo -notrait category=nonnetcoreapptests -notrait category=nonlinuxtests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing
popd
===========================================================================================================
~/corefx/artifacts/bin/System.Runtime.Tests/netcoreapp-Unix-Debug ~/corefx/src/System.Runtime/tests
[37m Discovering: System.Runtime.Tests (method display = ClassAndMethod, method display options = None)
[m[37m Discovered: System.Runtime.Tests (found 5372 of 5419 test cases)
[m[37m Starting: System.Runtime.Tests (parallel test collections = on, max threads = 4)
[m[33;1m System.Tests.DateTimeOffsetTests.ToLocalTime_MaxValue [SKIP]
[m[37m Condition(s) not met: "IsMaxValuePositiveLocalOffset"
System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(dateTimeString: "1940-02-25T00:00:00.0000000Z", expectedDST: True, expectedOffsetString: "1:00:00") [FAIL]
System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(dateTimeString: "1940-11-20T00:00:00.0000000Z", expectedDST: True, expectedOffsetString: "1:00:00") [FAIL]
System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(dateTimeString: "1940-12-31T23:59:59.0000000Z", expectedDST: True, expectedOffsetString: "1:00:00") [FAIL]
System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(dateTimeString: "1941-01-01T00:00:00.0000000Z", expectedDST: True, expectedOffsetString: "1:00:00") [FAIL]
System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(dateTimeString: "1945-02-24T12:00:00.0000000Z", expectedDST: True, expectedOffsetString: "1:00:00") [FAIL]
System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(dateTimeString: "1945-11-17T01:00:00.0000000Z", expectedDST: True, expectedOffsetString: "1:00:00") [FAIL]
System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(dateTimeString: "1945-11-17T22:59:59.0000000Z", expectedDST: True, expectedOffsetString: "1:00:00") [FAIL]
[m[31;1m[m[37m Test with the zone Africa/Casablanca and date 2/25/1940 12:00:00 AM failed
[m[37m Expected: True
[m[37m Actual: False
[m[30;1m Stack Trace:
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(2361,0): at System.Tests.TimeZoneInfoTests.VerifyDST(TimeZoneInfo tz, DateTime dt, Boolean expectedDST)
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(1743,0): at System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(String dateTimeString, Boolean expectedDST, String expectedOffsetString)
[m[31;1m[m[37m Test with the zone Africa/Casablanca and date 11/20/1940 12:00:00 AM failed
[m[37m Expected: True
[m[37m Actual: False
[m[30;1m Stack Trace:
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(2361,0): at System.Tests.TimeZoneInfoTests.VerifyDST(TimeZoneInfo tz, DateTime dt, Boolean expectedDST)
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(1743,0): at System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(String dateTimeString, Boolean expectedDST, String expectedOffsetString)
[m[31;1m[m[37m Test with the zone Africa/Casablanca and date 12/31/1940 11:59:59 PM failed
[m[37m Expected: True
[m[37m Actual: False
[m[30;1m Stack Trace:
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(2361,0): at System.Tests.TimeZoneInfoTests.VerifyDST(TimeZoneInfo tz, DateTime dt, Boolean expectedDST)
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(1743,0): at System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(String dateTimeString, Boolean expectedDST, String expectedOffsetString)
[m[31;1m[m[37m Test with the zone Africa/Casablanca and date 1/1/1941 12:00:00 AM failed
[m[37m Expected: True
[m[37m Actual: False
[m[30;1m Stack Trace:
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(2361,0): at System.Tests.TimeZoneInfoTests.VerifyDST(TimeZoneInfo tz, DateTime dt, Boolean expectedDST)
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(1743,0): at System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(String dateTimeString, Boolean expectedDST, String expectedOffsetString)
[m[31;1m[m[37m Test with the zone Africa/Casablanca and date 2/24/1945 12:00:00 PM failed
[m[37m Expected: True
[m[37m Actual: False
[m[30;1m Stack Trace:
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(2361,0): at System.Tests.TimeZoneInfoTests.VerifyDST(TimeZoneInfo tz, DateTime dt, Boolean expectedDST)
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(1743,0): at System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(String dateTimeString, Boolean expectedDST, String expectedOffsetString)
[m[31;1m[m[37m Test with the zone Africa/Casablanca and date 11/17/1945 1:00:00 AM failed
[m[37m Expected: True
[m[37m Actual: False
[m[30;1m Stack Trace:
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(2361,0): at System.Tests.TimeZoneInfoTests.VerifyDST(TimeZoneInfo tz, DateTime dt, Boolean expectedDST)
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(1743,0): at System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(String dateTimeString, Boolean expectedDST, String expectedOffsetString)
[m[31;1m[m[37m Test with the zone Africa/Casablanca and date 11/17/1945 10:59:59 PM failed
[m[37m Expected: True
[m[37m Actual: False
[m[30;1m Stack Trace:
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(2361,0): at System.Tests.TimeZoneInfoTests.VerifyDST(TimeZoneInfo tz, DateTime dt, Boolean expectedDST)
[m[37m /home/tester/corefx/src/System.Runtime/tests/System/TimeZoneInfoTests.cs(1743,0): at System.Tests.TimeZoneInfoTests.IsDaylightSavingTime_CasablancaMultiYearDaylightSavings(String dateTimeString, Boolean expectedDST, String expectedOffsetString)
[m[33;1m System.Tests.DateTimeOffsetTests.ToLocalTime_MinValue [SKIP]
[m[37m Condition(s) not met: "IsMinValueNegativeLocalOffset"
[m[33;1m System.Tests.DateTimeOffsetTests.ToLocalTime_Ambiguous [SKIP]
[m[37m Condition(s) not met: "IsPacificTime"
[m[33;1m System.Tests.ArgIteratorTests.ArgIterator_GetNextArgType [SKIP]
[m[37m Condition(s) not met: "IsArgIteratorSupported"
[m[33;1m System.Tests.ArgIteratorTests.ArgIterator_GetRemainingCount_GetNextArg [SKIP]
[m[37m Condition(s) not met: "IsArgIteratorSupported"
[m[37m Finished: System.Runtime.Tests
[m[37m=== TEST EXECUTION SUMMARY ===
[m[37m System.Runtime.Tests Total: 34299, Errors: 0, Failed: 7, Skipped: 5, Time: 13.603s
cc @omajid @RheaAyase
FYI @tarekgh
@tmds could you please send the output of the following command on the failing machine?
zdump Africa/Casablanca
CC @eerhardt
zdump Africa/Casablanca
Africa/Casablanca Wed Oct 30 15:48:23 2019 +01
I can look into this.
@tmds - I assume they also fail on CentOS 8? Or is this only on RHEL 8?
@tmds - I assume they also fail on CentOS 8? Or is this only on RHEL 8?
@eerhardt they should, but I haven't tried.
I tried Centos 8 and I am not seeing the problem there. I used net core 3.0 to check it. And the time zone data looks good to me too:
/usr/share/zoneinfo/Africa/Casablanca Sat Feb 24 23:59:59 1940 UT = Sat Feb 24 23:59:59 1940 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 25 00:00:00 1940 UT = Sun Feb 25 01:00:00 1940 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 17 22:59:59 1945 UT = Sat Nov 17 23:59:59 1945 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 17 23:00:00 1945 UT = Sat Nov 17 23:00:00 1945 +00 isdst=0 gmtoff=0
@tmds could you please try to dump the whole zone data in your machine?
zdump -v /usr/share/zoneinfo/Africa/Casablanca
[root@b56b4b44ded3 netcoreapp]# lsb_release -d
Description: CentOS Linux release 8.0.1905 (Core)
Might be useful to know the package version of the tzdata package on RHEL 8 vs CentOS 8 too: rpm -q tzdata.
From my centos:8 docker image I have: tzdata-2019a-1.el8.noarch.
I also compared these dates to an Ubuntu 18 image I have, and zdump -v /usr/share/zoneinfo/Africa/Casablanca looks the same for both from 1940 to 1950.
centos:8:
/usr/share/zoneinfo/Africa/Casablanca Sat Feb 24 23:59:59 1940 UT = Sat Feb 24 23:59:59 1940 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 25 00:00:00 1940 UT = Sun Feb 25 01:00:00 1940 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 17 22:59:59 1945 UT = Sat Nov 17 23:59:59 1945 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 17 23:00:00 1945 UT = Sat Nov 17 23:00:00 1945 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Jun 10 23:59:59 1950 UT = Sat Jun 10 23:59:59 1950 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 11 00:00:00 1950 UT = Sun Jun 11 01:00:00 1950 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Oct 28 22:59:59 1950 UT = Sat Oct 28 23:59:59 1950 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Oct 28 23:00:00 1950 UT = Sat Oct 28 23:00:00 1950 +00 isdst=0 gmtoff=0
Ubuntu 18:
/usr/share/zoneinfo/Africa/Casablanca Sat Feb 24 23:59:59 1940 UT = Sat Feb 24 23:59:59 1940 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 25 00:00:00 1940 UT = Sun Feb 25 01:00:00 1940 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 17 22:59:59 1945 UT = Sat Nov 17 23:59:59 1945 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 17 23:00:00 1945 UT = Sat Nov 17 23:00:00 1945 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Jun 10 23:59:59 1950 UT = Sat Jun 10 23:59:59 1950 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 11 00:00:00 1950 UT = Sun Jun 11 01:00:00 1950 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Oct 28 22:59:59 1950 UT = Sat Oct 28 23:59:59 1950 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Oct 28 23:00:00 1950 UT = Sat Oct 28 23:00:00 1950 +00 isdst=0 gmtoff=0
I did however notice a difference in more recent years (around 2018-2019) between the two, but this appears to be because of updates in the tzdata itself, and that shouldn't have caused this test to fail.
@tmds do you have any update?
zdump -v /usr/share/zoneinfo/Africa/Casablanca
/usr/share/zoneinfo/Africa/Casablanca -9223372036854775808 = NULL
/usr/share/zoneinfo/Africa/Casablanca -9223372036854689408 = NULL
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 26 00:30:19 1913 UT = Sat Oct 25 23:59:59 1913 LMT isdst=0 gmtoff=-1820
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 26 00:30:20 1913 UT = Sun Oct 26 00:30:20 1913 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Mon Sep 11 23:59:59 1939 UT = Mon Sep 11 23:59:59 1939 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Tue Sep 12 00:00:00 1939 UT = Tue Sep 12 01:00:00 1939 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 18 22:59:59 1939 UT = Sat Nov 18 23:59:59 1939 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 18 23:00:00 1939 UT = Sat Nov 18 23:00:00 1939 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Feb 24 23:59:59 1940 UT = Sat Feb 24 23:59:59 1940 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 25 00:00:00 1940 UT = Sun Feb 25 01:00:00 1940 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 17 22:59:59 1945 UT = Sat Nov 17 23:59:59 1945 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Nov 17 23:00:00 1945 UT = Sat Nov 17 23:00:00 1945 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Jun 10 23:59:59 1950 UT = Sat Jun 10 23:59:59 1950 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 11 00:00:00 1950 UT = Sun Jun 11 01:00:00 1950 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Oct 28 22:59:59 1950 UT = Sat Oct 28 23:59:59 1950 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Oct 28 23:00:00 1950 UT = Sat Oct 28 23:00:00 1950 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Jun 3 11:59:59 1967 UT = Sat Jun 3 11:59:59 1967 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Jun 3 12:00:00 1967 UT = Sat Jun 3 13:00:00 1967 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Sep 30 22:59:59 1967 UT = Sat Sep 30 23:59:59 1967 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Sep 30 23:00:00 1967 UT = Sat Sep 30 23:00:00 1967 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 23 23:59:59 1974 UT = Sun Jun 23 23:59:59 1974 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Mon Jun 24 00:00:00 1974 UT = Mon Jun 24 01:00:00 1974 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Aug 31 22:59:59 1974 UT = Sat Aug 31 23:59:59 1974 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Aug 31 23:00:00 1974 UT = Sat Aug 31 23:00:00 1974 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Fri Apr 30 23:59:59 1976 UT = Fri Apr 30 23:59:59 1976 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat May 1 00:00:00 1976 UT = Sat May 1 01:00:00 1976 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Jul 31 22:59:59 1976 UT = Sat Jul 31 23:59:59 1976 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Jul 31 23:00:00 1976 UT = Sat Jul 31 23:00:00 1976 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Apr 30 23:59:59 1977 UT = Sat Apr 30 23:59:59 1977 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 1 00:00:00 1977 UT = Sun May 1 01:00:00 1977 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Tue Sep 27 22:59:59 1977 UT = Tue Sep 27 23:59:59 1977 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Tue Sep 27 23:00:00 1977 UT = Tue Sep 27 23:00:00 1977 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Wed May 31 23:59:59 1978 UT = Wed May 31 23:59:59 1978 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Thu Jun 1 00:00:00 1978 UT = Thu Jun 1 01:00:00 1978 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Thu Aug 3 22:59:59 1978 UT = Thu Aug 3 23:59:59 1978 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Thu Aug 3 23:00:00 1978 UT = Thu Aug 3 23:00:00 1978 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Thu Mar 15 23:59:59 1984 UT = Thu Mar 15 23:59:59 1984 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Fri Mar 16 00:00:00 1984 UT = Fri Mar 16 01:00:00 1984 +01 isdst=0 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Tue Dec 31 22:59:59 1985 UT = Tue Dec 31 23:59:59 1985 +01 isdst=0 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Tue Dec 31 23:00:00 1985 UT = Tue Dec 31 23:00:00 1985 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat May 31 23:59:59 2008 UT = Sat May 31 23:59:59 2008 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 1 00:00:00 2008 UT = Sun Jun 1 01:00:00 2008 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 31 22:59:59 2008 UT = Sun Aug 31 23:59:59 2008 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 31 23:00:00 2008 UT = Sun Aug 31 23:00:00 2008 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 31 23:59:59 2009 UT = Sun May 31 23:59:59 2009 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Mon Jun 1 00:00:00 2009 UT = Mon Jun 1 01:00:00 2009 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Thu Aug 20 22:59:59 2009 UT = Thu Aug 20 23:59:59 2009 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Thu Aug 20 23:00:00 2009 UT = Thu Aug 20 23:00:00 2009 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat May 1 23:59:59 2010 UT = Sat May 1 23:59:59 2010 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 2 00:00:00 2010 UT = Sun May 2 01:00:00 2010 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Aug 7 22:59:59 2010 UT = Sat Aug 7 23:59:59 2010 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Aug 7 23:00:00 2010 UT = Sat Aug 7 23:00:00 2010 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Apr 2 23:59:59 2011 UT = Sat Apr 2 23:59:59 2011 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 3 00:00:00 2011 UT = Sun Apr 3 01:00:00 2011 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Jul 30 22:59:59 2011 UT = Sat Jul 30 23:59:59 2011 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Jul 30 23:00:00 2011 UT = Sat Jul 30 23:00:00 2011 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 29 01:59:59 2012 UT = Sun Apr 29 01:59:59 2012 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 29 02:00:00 2012 UT = Sun Apr 29 03:00:00 2012 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Fri Jul 20 01:59:59 2012 UT = Fri Jul 20 02:59:59 2012 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Fri Jul 20 02:00:00 2012 UT = Fri Jul 20 02:00:00 2012 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Mon Aug 20 01:59:59 2012 UT = Mon Aug 20 01:59:59 2012 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Mon Aug 20 02:00:00 2012 UT = Mon Aug 20 03:00:00 2012 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 30 01:59:59 2012 UT = Sun Sep 30 02:59:59 2012 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 30 02:00:00 2012 UT = Sun Sep 30 02:00:00 2012 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 28 01:59:59 2013 UT = Sun Apr 28 01:59:59 2013 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 28 02:00:00 2013 UT = Sun Apr 28 03:00:00 2013 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 7 01:59:59 2013 UT = Sun Jul 7 02:59:59 2013 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 7 02:00:00 2013 UT = Sun Jul 7 02:00:00 2013 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Aug 10 01:59:59 2013 UT = Sat Aug 10 01:59:59 2013 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Aug 10 02:00:00 2013 UT = Sat Aug 10 03:00:00 2013 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 27 01:59:59 2013 UT = Sun Oct 27 02:59:59 2013 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 27 02:00:00 2013 UT = Sun Oct 27 02:00:00 2013 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 30 01:59:59 2014 UT = Sun Mar 30 01:59:59 2014 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 30 02:00:00 2014 UT = Sun Mar 30 03:00:00 2014 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Jun 28 01:59:59 2014 UT = Sat Jun 28 02:59:59 2014 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sat Jun 28 02:00:00 2014 UT = Sat Jun 28 02:00:00 2014 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Aug 2 01:59:59 2014 UT = Sat Aug 2 01:59:59 2014 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sat Aug 2 02:00:00 2014 UT = Sat Aug 2 03:00:00 2014 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 26 01:59:59 2014 UT = Sun Oct 26 02:59:59 2014 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 26 02:00:00 2014 UT = Sun Oct 26 02:00:00 2014 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 29 01:59:59 2015 UT = Sun Mar 29 01:59:59 2015 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 29 02:00:00 2015 UT = Sun Mar 29 03:00:00 2015 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 14 01:59:59 2015 UT = Sun Jun 14 02:59:59 2015 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 14 02:00:00 2015 UT = Sun Jun 14 02:00:00 2015 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 19 01:59:59 2015 UT = Sun Jul 19 01:59:59 2015 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 19 02:00:00 2015 UT = Sun Jul 19 03:00:00 2015 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 25 01:59:59 2015 UT = Sun Oct 25 02:59:59 2015 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 25 02:00:00 2015 UT = Sun Oct 25 02:00:00 2015 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 27 01:59:59 2016 UT = Sun Mar 27 01:59:59 2016 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 27 02:00:00 2016 UT = Sun Mar 27 03:00:00 2016 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 5 01:59:59 2016 UT = Sun Jun 5 02:59:59 2016 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 5 02:00:00 2016 UT = Sun Jun 5 02:00:00 2016 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 10 01:59:59 2016 UT = Sun Jul 10 01:59:59 2016 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 10 02:00:00 2016 UT = Sun Jul 10 03:00:00 2016 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 30 01:59:59 2016 UT = Sun Oct 30 02:59:59 2016 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 30 02:00:00 2016 UT = Sun Oct 30 02:00:00 2016 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 26 01:59:59 2017 UT = Sun Mar 26 01:59:59 2017 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 26 02:00:00 2017 UT = Sun Mar 26 03:00:00 2017 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 21 01:59:59 2017 UT = Sun May 21 02:59:59 2017 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 21 02:00:00 2017 UT = Sun May 21 02:00:00 2017 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 2 01:59:59 2017 UT = Sun Jul 2 01:59:59 2017 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 2 02:00:00 2017 UT = Sun Jul 2 03:00:00 2017 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 29 01:59:59 2017 UT = Sun Oct 29 02:59:59 2017 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 29 02:00:00 2017 UT = Sun Oct 29 02:00:00 2017 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 25 01:59:59 2018 UT = Sun Mar 25 01:59:59 2018 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 25 02:00:00 2018 UT = Sun Mar 25 03:00:00 2018 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 13 01:59:59 2018 UT = Sun May 13 02:59:59 2018 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 13 02:00:00 2018 UT = Sun May 13 02:00:00 2018 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 17 01:59:59 2018 UT = Sun Jun 17 01:59:59 2018 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 17 02:00:00 2018 UT = Sun Jun 17 03:00:00 2018 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 5 01:59:59 2019 UT = Sun May 5 02:59:59 2019 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 5 02:00:00 2019 UT = Sun May 5 02:00:00 2019 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 9 01:59:59 2019 UT = Sun Jun 9 01:59:59 2019 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 9 02:00:00 2019 UT = Sun Jun 9 03:00:00 2019 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 19 01:59:59 2020 UT = Sun Apr 19 02:59:59 2020 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 19 02:00:00 2020 UT = Sun Apr 19 02:00:00 2020 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 24 01:59:59 2020 UT = Sun May 24 01:59:59 2020 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 24 02:00:00 2020 UT = Sun May 24 03:00:00 2020 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 11 01:59:59 2021 UT = Sun Apr 11 02:59:59 2021 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 11 02:00:00 2021 UT = Sun Apr 11 02:00:00 2021 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 16 01:59:59 2021 UT = Sun May 16 01:59:59 2021 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 16 02:00:00 2021 UT = Sun May 16 03:00:00 2021 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 27 01:59:59 2022 UT = Sun Mar 27 02:59:59 2022 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 27 02:00:00 2022 UT = Sun Mar 27 02:00:00 2022 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 8 01:59:59 2022 UT = Sun May 8 01:59:59 2022 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 8 02:00:00 2022 UT = Sun May 8 03:00:00 2022 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 19 01:59:59 2023 UT = Sun Mar 19 02:59:59 2023 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 19 02:00:00 2023 UT = Sun Mar 19 02:00:00 2023 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 23 01:59:59 2023 UT = Sun Apr 23 01:59:59 2023 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 23 02:00:00 2023 UT = Sun Apr 23 03:00:00 2023 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 10 01:59:59 2024 UT = Sun Mar 10 02:59:59 2024 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 10 02:00:00 2024 UT = Sun Mar 10 02:00:00 2024 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 14 01:59:59 2024 UT = Sun Apr 14 01:59:59 2024 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 14 02:00:00 2024 UT = Sun Apr 14 03:00:00 2024 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 23 01:59:59 2025 UT = Sun Feb 23 02:59:59 2025 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 23 02:00:00 2025 UT = Sun Feb 23 02:00:00 2025 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 6 01:59:59 2025 UT = Sun Apr 6 01:59:59 2025 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 6 02:00:00 2025 UT = Sun Apr 6 03:00:00 2025 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 15 01:59:59 2026 UT = Sun Feb 15 02:59:59 2026 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 15 02:00:00 2026 UT = Sun Feb 15 02:00:00 2026 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 22 01:59:59 2026 UT = Sun Mar 22 01:59:59 2026 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 22 02:00:00 2026 UT = Sun Mar 22 03:00:00 2026 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 7 01:59:59 2027 UT = Sun Feb 7 02:59:59 2027 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 7 02:00:00 2027 UT = Sun Feb 7 02:00:00 2027 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 14 01:59:59 2027 UT = Sun Mar 14 01:59:59 2027 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 14 02:00:00 2027 UT = Sun Mar 14 03:00:00 2027 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 23 01:59:59 2028 UT = Sun Jan 23 02:59:59 2028 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 23 02:00:00 2028 UT = Sun Jan 23 02:00:00 2028 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 27 01:59:59 2028 UT = Sun Feb 27 01:59:59 2028 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 27 02:00:00 2028 UT = Sun Feb 27 03:00:00 2028 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 14 01:59:59 2029 UT = Sun Jan 14 02:59:59 2029 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 14 02:00:00 2029 UT = Sun Jan 14 02:00:00 2029 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 18 01:59:59 2029 UT = Sun Feb 18 01:59:59 2029 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 18 02:00:00 2029 UT = Sun Feb 18 03:00:00 2029 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 30 01:59:59 2029 UT = Sun Dec 30 02:59:59 2029 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 30 02:00:00 2029 UT = Sun Dec 30 02:00:00 2029 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 10 01:59:59 2030 UT = Sun Feb 10 01:59:59 2030 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 10 02:00:00 2030 UT = Sun Feb 10 03:00:00 2030 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 22 01:59:59 2030 UT = Sun Dec 22 02:59:59 2030 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 22 02:00:00 2030 UT = Sun Dec 22 02:00:00 2030 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 26 01:59:59 2031 UT = Sun Jan 26 01:59:59 2031 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 26 02:00:00 2031 UT = Sun Jan 26 03:00:00 2031 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 14 01:59:59 2031 UT = Sun Dec 14 02:59:59 2031 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 14 02:00:00 2031 UT = Sun Dec 14 02:00:00 2031 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 18 01:59:59 2032 UT = Sun Jan 18 01:59:59 2032 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 18 02:00:00 2032 UT = Sun Jan 18 03:00:00 2032 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 28 01:59:59 2032 UT = Sun Nov 28 02:59:59 2032 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 28 02:00:00 2032 UT = Sun Nov 28 02:00:00 2032 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 9 01:59:59 2033 UT = Sun Jan 9 01:59:59 2033 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 9 02:00:00 2033 UT = Sun Jan 9 03:00:00 2033 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 20 01:59:59 2033 UT = Sun Nov 20 02:59:59 2033 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 20 02:00:00 2033 UT = Sun Nov 20 02:00:00 2033 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 25 01:59:59 2033 UT = Sun Dec 25 01:59:59 2033 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 25 02:00:00 2033 UT = Sun Dec 25 03:00:00 2033 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 5 01:59:59 2034 UT = Sun Nov 5 02:59:59 2034 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 5 02:00:00 2034 UT = Sun Nov 5 02:00:00 2034 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 17 01:59:59 2034 UT = Sun Dec 17 01:59:59 2034 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 17 02:00:00 2034 UT = Sun Dec 17 03:00:00 2034 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 28 01:59:59 2035 UT = Sun Oct 28 02:59:59 2035 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 28 02:00:00 2035 UT = Sun Oct 28 02:00:00 2035 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 2 01:59:59 2035 UT = Sun Dec 2 01:59:59 2035 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 2 02:00:00 2035 UT = Sun Dec 2 03:00:00 2035 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 19 01:59:59 2036 UT = Sun Oct 19 02:59:59 2036 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 19 02:00:00 2036 UT = Sun Oct 19 02:00:00 2036 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 23 01:59:59 2036 UT = Sun Nov 23 01:59:59 2036 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 23 02:00:00 2036 UT = Sun Nov 23 03:00:00 2036 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 4 01:59:59 2037 UT = Sun Oct 4 02:59:59 2037 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 4 02:00:00 2037 UT = Sun Oct 4 02:00:00 2037 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 15 01:59:59 2037 UT = Sun Nov 15 01:59:59 2037 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 15 02:00:00 2037 UT = Sun Nov 15 03:00:00 2037 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 26 01:59:59 2038 UT = Sun Sep 26 02:59:59 2038 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 26 02:00:00 2038 UT = Sun Sep 26 02:00:00 2038 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 31 01:59:59 2038 UT = Sun Oct 31 01:59:59 2038 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 31 02:00:00 2038 UT = Sun Oct 31 03:00:00 2038 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 18 01:59:59 2039 UT = Sun Sep 18 02:59:59 2039 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 18 02:00:00 2039 UT = Sun Sep 18 02:00:00 2039 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 23 01:59:59 2039 UT = Sun Oct 23 01:59:59 2039 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 23 02:00:00 2039 UT = Sun Oct 23 03:00:00 2039 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 2 01:59:59 2040 UT = Sun Sep 2 02:59:59 2040 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 2 02:00:00 2040 UT = Sun Sep 2 02:00:00 2040 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 14 01:59:59 2040 UT = Sun Oct 14 01:59:59 2040 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 14 02:00:00 2040 UT = Sun Oct 14 03:00:00 2040 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 25 01:59:59 2041 UT = Sun Aug 25 02:59:59 2041 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 25 02:00:00 2041 UT = Sun Aug 25 02:00:00 2041 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 29 01:59:59 2041 UT = Sun Sep 29 01:59:59 2041 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 29 02:00:00 2041 UT = Sun Sep 29 03:00:00 2041 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 10 01:59:59 2042 UT = Sun Aug 10 02:59:59 2042 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 10 02:00:00 2042 UT = Sun Aug 10 02:00:00 2042 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 21 01:59:59 2042 UT = Sun Sep 21 01:59:59 2042 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 21 02:00:00 2042 UT = Sun Sep 21 03:00:00 2042 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 2 01:59:59 2043 UT = Sun Aug 2 02:59:59 2043 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 2 02:00:00 2043 UT = Sun Aug 2 02:00:00 2043 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 6 01:59:59 2043 UT = Sun Sep 6 01:59:59 2043 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 6 02:00:00 2043 UT = Sun Sep 6 03:00:00 2043 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 24 01:59:59 2044 UT = Sun Jul 24 02:59:59 2044 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 24 02:00:00 2044 UT = Sun Jul 24 02:00:00 2044 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 28 01:59:59 2044 UT = Sun Aug 28 01:59:59 2044 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 28 02:00:00 2044 UT = Sun Aug 28 03:00:00 2044 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 9 01:59:59 2045 UT = Sun Jul 9 02:59:59 2045 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 9 02:00:00 2045 UT = Sun Jul 9 02:00:00 2045 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 20 01:59:59 2045 UT = Sun Aug 20 01:59:59 2045 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 20 02:00:00 2045 UT = Sun Aug 20 03:00:00 2045 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 1 01:59:59 2046 UT = Sun Jul 1 02:59:59 2046 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 1 02:00:00 2046 UT = Sun Jul 1 02:00:00 2046 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 5 01:59:59 2046 UT = Sun Aug 5 01:59:59 2046 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 5 02:00:00 2046 UT = Sun Aug 5 03:00:00 2046 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 23 01:59:59 2047 UT = Sun Jun 23 02:59:59 2047 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 23 02:00:00 2047 UT = Sun Jun 23 02:00:00 2047 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 28 01:59:59 2047 UT = Sun Jul 28 01:59:59 2047 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 28 02:00:00 2047 UT = Sun Jul 28 03:00:00 2047 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 7 01:59:59 2048 UT = Sun Jun 7 02:59:59 2048 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 7 02:00:00 2048 UT = Sun Jun 7 02:00:00 2048 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 19 01:59:59 2048 UT = Sun Jul 19 01:59:59 2048 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 19 02:00:00 2048 UT = Sun Jul 19 03:00:00 2048 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 30 01:59:59 2049 UT = Sun May 30 02:59:59 2049 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 30 02:00:00 2049 UT = Sun May 30 02:00:00 2049 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 4 01:59:59 2049 UT = Sun Jul 4 01:59:59 2049 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 4 02:00:00 2049 UT = Sun Jul 4 03:00:00 2049 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 15 01:59:59 2050 UT = Sun May 15 02:59:59 2050 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 15 02:00:00 2050 UT = Sun May 15 02:00:00 2050 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 26 01:59:59 2050 UT = Sun Jun 26 01:59:59 2050 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 26 02:00:00 2050 UT = Sun Jun 26 03:00:00 2050 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 7 01:59:59 2051 UT = Sun May 7 02:59:59 2051 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 7 02:00:00 2051 UT = Sun May 7 02:00:00 2051 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 11 01:59:59 2051 UT = Sun Jun 11 01:59:59 2051 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 11 02:00:00 2051 UT = Sun Jun 11 03:00:00 2051 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 28 01:59:59 2052 UT = Sun Apr 28 02:59:59 2052 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 28 02:00:00 2052 UT = Sun Apr 28 02:00:00 2052 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 2 01:59:59 2052 UT = Sun Jun 2 01:59:59 2052 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 2 02:00:00 2052 UT = Sun Jun 2 03:00:00 2052 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 13 01:59:59 2053 UT = Sun Apr 13 02:59:59 2053 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 13 02:00:00 2053 UT = Sun Apr 13 02:00:00 2053 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 25 01:59:59 2053 UT = Sun May 25 01:59:59 2053 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 25 02:00:00 2053 UT = Sun May 25 03:00:00 2053 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 5 01:59:59 2054 UT = Sun Apr 5 02:59:59 2054 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 5 02:00:00 2054 UT = Sun Apr 5 02:00:00 2054 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 10 01:59:59 2054 UT = Sun May 10 01:59:59 2054 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 10 02:00:00 2054 UT = Sun May 10 03:00:00 2054 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 28 01:59:59 2055 UT = Sun Mar 28 02:59:59 2055 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 28 02:00:00 2055 UT = Sun Mar 28 02:00:00 2055 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 2 01:59:59 2055 UT = Sun May 2 01:59:59 2055 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 2 02:00:00 2055 UT = Sun May 2 03:00:00 2055 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 12 01:59:59 2056 UT = Sun Mar 12 02:59:59 2056 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 12 02:00:00 2056 UT = Sun Mar 12 02:00:00 2056 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 23 01:59:59 2056 UT = Sun Apr 23 01:59:59 2056 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 23 02:00:00 2056 UT = Sun Apr 23 03:00:00 2056 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 4 01:59:59 2057 UT = Sun Mar 4 02:59:59 2057 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 4 02:00:00 2057 UT = Sun Mar 4 02:00:00 2057 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 8 01:59:59 2057 UT = Sun Apr 8 01:59:59 2057 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 8 02:00:00 2057 UT = Sun Apr 8 03:00:00 2057 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 17 01:59:59 2058 UT = Sun Feb 17 02:59:59 2058 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 17 02:00:00 2058 UT = Sun Feb 17 02:00:00 2058 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 31 01:59:59 2058 UT = Sun Mar 31 01:59:59 2058 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 31 02:00:00 2058 UT = Sun Mar 31 03:00:00 2058 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 9 01:59:59 2059 UT = Sun Feb 9 02:59:59 2059 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 9 02:00:00 2059 UT = Sun Feb 9 02:00:00 2059 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 16 01:59:59 2059 UT = Sun Mar 16 01:59:59 2059 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 16 02:00:00 2059 UT = Sun Mar 16 03:00:00 2059 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 1 01:59:59 2060 UT = Sun Feb 1 02:59:59 2060 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 1 02:00:00 2060 UT = Sun Feb 1 02:00:00 2060 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 7 01:59:59 2060 UT = Sun Mar 7 01:59:59 2060 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 7 02:00:00 2060 UT = Sun Mar 7 03:00:00 2060 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 16 01:59:59 2061 UT = Sun Jan 16 02:59:59 2061 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 16 02:00:00 2061 UT = Sun Jan 16 02:00:00 2061 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 27 01:59:59 2061 UT = Sun Feb 27 01:59:59 2061 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 27 02:00:00 2061 UT = Sun Feb 27 03:00:00 2061 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 8 01:59:59 2062 UT = Sun Jan 8 02:59:59 2062 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 8 02:00:00 2062 UT = Sun Jan 8 02:00:00 2062 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 12 01:59:59 2062 UT = Sun Feb 12 01:59:59 2062 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 12 02:00:00 2062 UT = Sun Feb 12 03:00:00 2062 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 31 01:59:59 2062 UT = Sun Dec 31 02:59:59 2062 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 31 02:00:00 2062 UT = Sun Dec 31 02:00:00 2062 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 4 01:59:59 2063 UT = Sun Feb 4 01:59:59 2063 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Feb 4 02:00:00 2063 UT = Sun Feb 4 03:00:00 2063 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 16 01:59:59 2063 UT = Sun Dec 16 02:59:59 2063 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 16 02:00:00 2063 UT = Sun Dec 16 02:00:00 2063 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 20 01:59:59 2064 UT = Sun Jan 20 01:59:59 2064 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 20 02:00:00 2064 UT = Sun Jan 20 03:00:00 2064 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 7 01:59:59 2064 UT = Sun Dec 7 02:59:59 2064 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 7 02:00:00 2064 UT = Sun Dec 7 02:00:00 2064 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 11 01:59:59 2065 UT = Sun Jan 11 01:59:59 2065 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 11 02:00:00 2065 UT = Sun Jan 11 03:00:00 2065 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 22 01:59:59 2065 UT = Sun Nov 22 02:59:59 2065 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 22 02:00:00 2065 UT = Sun Nov 22 02:00:00 2065 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 3 01:59:59 2066 UT = Sun Jan 3 01:59:59 2066 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jan 3 02:00:00 2066 UT = Sun Jan 3 03:00:00 2066 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 14 01:59:59 2066 UT = Sun Nov 14 02:59:59 2066 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 14 02:00:00 2066 UT = Sun Nov 14 02:00:00 2066 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 19 01:59:59 2066 UT = Sun Dec 19 01:59:59 2066 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 19 02:00:00 2066 UT = Sun Dec 19 03:00:00 2066 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 6 01:59:59 2067 UT = Sun Nov 6 02:59:59 2067 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 6 02:00:00 2067 UT = Sun Nov 6 02:00:00 2067 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 11 01:59:59 2067 UT = Sun Dec 11 01:59:59 2067 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 11 02:00:00 2067 UT = Sun Dec 11 03:00:00 2067 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 21 01:59:59 2068 UT = Sun Oct 21 02:59:59 2068 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 21 02:00:00 2068 UT = Sun Oct 21 02:00:00 2068 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 2 01:59:59 2068 UT = Sun Dec 2 01:59:59 2068 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Dec 2 02:00:00 2068 UT = Sun Dec 2 03:00:00 2068 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 13 01:59:59 2069 UT = Sun Oct 13 02:59:59 2069 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 13 02:00:00 2069 UT = Sun Oct 13 02:00:00 2069 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 17 01:59:59 2069 UT = Sun Nov 17 01:59:59 2069 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 17 02:00:00 2069 UT = Sun Nov 17 03:00:00 2069 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 5 01:59:59 2070 UT = Sun Oct 5 02:59:59 2070 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 5 02:00:00 2070 UT = Sun Oct 5 02:00:00 2070 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 9 01:59:59 2070 UT = Sun Nov 9 01:59:59 2070 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Nov 9 02:00:00 2070 UT = Sun Nov 9 03:00:00 2070 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 20 01:59:59 2071 UT = Sun Sep 20 02:59:59 2071 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 20 02:00:00 2071 UT = Sun Sep 20 02:00:00 2071 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 25 01:59:59 2071 UT = Sun Oct 25 01:59:59 2071 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 25 02:00:00 2071 UT = Sun Oct 25 03:00:00 2071 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 11 01:59:59 2072 UT = Sun Sep 11 02:59:59 2072 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 11 02:00:00 2072 UT = Sun Sep 11 02:00:00 2072 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 16 01:59:59 2072 UT = Sun Oct 16 01:59:59 2072 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 16 02:00:00 2072 UT = Sun Oct 16 03:00:00 2072 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 27 01:59:59 2073 UT = Sun Aug 27 02:59:59 2073 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 27 02:00:00 2073 UT = Sun Aug 27 02:00:00 2073 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 8 01:59:59 2073 UT = Sun Oct 8 01:59:59 2073 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Oct 8 02:00:00 2073 UT = Sun Oct 8 03:00:00 2073 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 19 01:59:59 2074 UT = Sun Aug 19 02:59:59 2074 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 19 02:00:00 2074 UT = Sun Aug 19 02:00:00 2074 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 23 01:59:59 2074 UT = Sun Sep 23 01:59:59 2074 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 23 02:00:00 2074 UT = Sun Sep 23 03:00:00 2074 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 11 01:59:59 2075 UT = Sun Aug 11 02:59:59 2075 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 11 02:00:00 2075 UT = Sun Aug 11 02:00:00 2075 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 15 01:59:59 2075 UT = Sun Sep 15 01:59:59 2075 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 15 02:00:00 2075 UT = Sun Sep 15 03:00:00 2075 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 26 01:59:59 2076 UT = Sun Jul 26 02:59:59 2076 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 26 02:00:00 2076 UT = Sun Jul 26 02:00:00 2076 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 6 01:59:59 2076 UT = Sun Sep 6 01:59:59 2076 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Sep 6 02:00:00 2076 UT = Sun Sep 6 03:00:00 2076 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 18 01:59:59 2077 UT = Sun Jul 18 02:59:59 2077 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 18 02:00:00 2077 UT = Sun Jul 18 02:00:00 2077 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 22 01:59:59 2077 UT = Sun Aug 22 01:59:59 2077 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 22 02:00:00 2077 UT = Sun Aug 22 03:00:00 2077 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 10 01:59:59 2078 UT = Sun Jul 10 02:59:59 2078 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 10 02:00:00 2078 UT = Sun Jul 10 02:00:00 2078 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 14 01:59:59 2078 UT = Sun Aug 14 01:59:59 2078 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Aug 14 02:00:00 2078 UT = Sun Aug 14 03:00:00 2078 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 25 01:59:59 2079 UT = Sun Jun 25 02:59:59 2079 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 25 02:00:00 2079 UT = Sun Jun 25 02:00:00 2079 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 30 01:59:59 2079 UT = Sun Jul 30 01:59:59 2079 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 30 02:00:00 2079 UT = Sun Jul 30 03:00:00 2079 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 16 01:59:59 2080 UT = Sun Jun 16 02:59:59 2080 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 16 02:00:00 2080 UT = Sun Jun 16 02:00:00 2080 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 21 01:59:59 2080 UT = Sun Jul 21 01:59:59 2080 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 21 02:00:00 2080 UT = Sun Jul 21 03:00:00 2080 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 1 01:59:59 2081 UT = Sun Jun 1 02:59:59 2081 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 1 02:00:00 2081 UT = Sun Jun 1 02:00:00 2081 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 13 01:59:59 2081 UT = Sun Jul 13 01:59:59 2081 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jul 13 02:00:00 2081 UT = Sun Jul 13 03:00:00 2081 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 24 01:59:59 2082 UT = Sun May 24 02:59:59 2082 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 24 02:00:00 2082 UT = Sun May 24 02:00:00 2082 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 28 01:59:59 2082 UT = Sun Jun 28 01:59:59 2082 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 28 02:00:00 2082 UT = Sun Jun 28 03:00:00 2082 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 16 01:59:59 2083 UT = Sun May 16 02:59:59 2083 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun May 16 02:00:00 2083 UT = Sun May 16 02:00:00 2083 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 20 01:59:59 2083 UT = Sun Jun 20 01:59:59 2083 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 20 02:00:00 2083 UT = Sun Jun 20 03:00:00 2083 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 30 01:59:59 2084 UT = Sun Apr 30 02:59:59 2084 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 30 02:00:00 2084 UT = Sun Apr 30 02:00:00 2084 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 11 01:59:59 2084 UT = Sun Jun 11 01:59:59 2084 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun Jun 11 02:00:00 2084 UT = Sun Jun 11 03:00:00 2084 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 22 01:59:59 2085 UT = Sun Apr 22 02:59:59 2085 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 22 02:00:00 2085 UT = Sun Apr 22 02:00:00 2085 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 27 01:59:59 2085 UT = Sun May 27 01:59:59 2085 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 27 02:00:00 2085 UT = Sun May 27 03:00:00 2085 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 14 01:59:59 2086 UT = Sun Apr 14 02:59:59 2086 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Apr 14 02:00:00 2086 UT = Sun Apr 14 02:00:00 2086 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 19 01:59:59 2086 UT = Sun May 19 01:59:59 2086 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 19 02:00:00 2086 UT = Sun May 19 03:00:00 2086 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 30 01:59:59 2087 UT = Sun Mar 30 02:59:59 2087 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca Sun Mar 30 02:00:00 2087 UT = Sun Mar 30 02:00:00 2087 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 4 01:59:59 2087 UT = Sun May 4 01:59:59 2087 +00 isdst=0 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca Sun May 4 02:00:00 2087 UT = Sun May 4 03:00:00 2087 +01 isdst=1 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca 9223372036854689407 = NULL
/usr/share/zoneinfo/Africa/Casablanca 9223372036854775807 = NULL
rpm -q tzdata
tzdata-2019c-1.el8.noarch
@tmds the data looks good there.
could you please try to run the test manually on that machine and look if it fail? otherwise we'll need to try to get a local repro to investigate.
I think I was able to repro this issue using a RHEL 8 docker image, and updating it to tzdata-2019c-1.el8.noarch. It appears we are having trouble with parsing the Casablanca tzfile, in particular the "futureTransitionsPosixFormat" string. Since we are throwing an exception trying to make the AdjustmentRules, TimeZoneInfo is falling back to disabling daylight savings time here:
Then, the returned TimeZoneInfo instance doesn't have any AdjustmentRules - thus all DST is turned off.
The reason the exception is being thrown is because we can't parse the futureTransitionsPosixFormat string. On my machine the string looks like:
<+00>0<+01>,0/0,J365/25
The troublesome part is that 0/0 right in the middle. According to http://man7.org/linux/man-pages/man3/tzset.3.html,
n This specifies the zero-based Julian day with n between 0 and 365. February 29 is counted in leap years.
See this comment:
A potential spot-fix for this exact scenario would be to support n where n < 59. As long as the date isn't past Feb 28, we are able to model this TransitionTime with our current design.
Also related to https://github.com/dotnet/corefx/issues/29192
Attaching the Africa/Casablanca file from my RHEL 8 machine:
Casablanca.zip
@eerhardt can't we fully support this by adding some flag (or value inside the transition time) telling it is not fixed date rule and it need a calculation of the day?
Yes, that will be the full-blown fix. It would be more expensive though, as we would have to take into account serialization, and if we want to expose it as a new API or not.
Serialization need more work anyway to fix the reported issue especially on Linux. I am still thinking what is the best way to fix that (which mainly fixing TZI.GetAdjustmentRules()).
I agree with you if we can have a quick fix now for this Moroccan TZ issue as I am guessing this problem will show up on all Linux distros when upgrading to the new TZ data I guess.
@tmds - so an interesting thing about 2019c is that I just built it from source on my Ubuntu box:
Looking at the ~/tzdir/usr/share/zoneinfo/Africa/Casablanca file that is produced by that, I see it is different than the one I got from RedHat 8 after yum update tzdata.

On the left is the file from RedHat. On the right is the file I built locally. You can see the POSIX strings are different between the two files. The RedHat one has <+00>0<+01>,0/0,J365/25 while the locally built one doesn't.
@tmds @omajid - do you know why RedHat is different here?
@eerhardt Can you reproduce with:
make TOPDIR=$HOME/tzdir DATAFORM=rearguard install
If so, this is being caused by the 'rearguard' data format. I found some information in the NEWS file and some in this blog.
This looks like the commit that adds this Casablanca negative DST change: https://github.com/eggert/tz/commit/8539a448ebc8897e40d62f16dc4d0ada3f07b3ca
Thanks @omajid, rearguard answered my question on why I was seeing different data. I was able to get the same as RedHat by building with DATAFORM=rearguard.
For fixing this issue, I have 3 different changes in mind, and I am looking for opinions on how to proceed.
n format when n < 59 in the POSIX string. This can be done without changes to the underlying TransitionTime structure.TransitionTime to support the n format fully. This may take some design work as the current struct looks like:C#
public readonly struct TransitionTime
{
private readonly DateTime _timeOfDay;
private readonly byte _month;
private readonly byte _week;
private readonly byte _day;
private readonly DayOfWeek _dayOfWeek;
private readonly bool _isFixedDateRule;
The issue with the n format is that it will include Feb 29 during leap years, and doesn't include Feb 29 in non leap years. So the n is the number of days from Jan 1 _in that year_ when DST transitions. Given the above structure - byte month, byte week, byte day - we would have to add more data to this type (which is already at 16 bytes, so this could potentially be impacting performance). How exactly to change this structure isn't clear to me at this point.
No matter the decision on which route to take above, I think we should make the following change as well:
This bug could be "fixed" with just change (3) above. I think implementing that makes the most sense and that change could potentially be ported to 3.1 if we deemed it necessary. I was wondering what's people's opinions on (1) and (2) above? Would doing either of them make sense? Or should we skip those and just do (3)?
@eerhardt for number 2 can't we recycle some of the TransitionTime fields to be used for this case. I mean somehow we use specific value of one of the fields to indicate this is the type of the posix rule (e.g. negative month for example or some bigger month value like Max byte value) and then use the _day to store the value we read from the rule which indicate how many days from year start. do we need to store any other information?
can't we recycle some of the TransitionTime fields to be used for this case
I can't think of a way to do that that wouldn't seem like a total hack and we would have to re-write our docs on this. It would totally change the meaning of these fields.
then use the _day to store the value we read from the rule
The rule can go from 0 to 365. _day is a byte, which can only store 256 values.
UPDATE:
Maybe one way to do this that wouldn't be a complete hack is to use this scheme:
_month = 0
_week = n / 7
_day = n % 7
In this scheme - month == 0 (today it goes from 1-12) would put us in this mode. And then week would mean which week in the current year DST switches (values from 0-52), and day would mean which day in that week.
So the biggest changes would be to allow month == 0 and then when month == 0 allow for week to go from 0-52. And then we would need to update all the places that inspect TransitionTime and update their usage.
I like the last idea you mentioned and I think wouldn't be too much to check all places we use TransitionTime to ensure handling breaking cases.
Thanks, @tarekgh. How about this for a plan:
3.1 if we see it we see a need for it.TransitionTime Month, Week, and Day. I don't think it would be reasonable to make that kind of change in a servicing release.@eerhardt this is good plan. one question, do you think this posix format can show up in non future dates? just trying to know if we can hit this issue again with non future dates. In general, your plan is good and should put us in much better position handling this posix case. thanks for helping with it.
The posix format only affects for datetimes after the last transition in the tzdata file.
The last transition in the file may have been in the past, so it isn't guaranteed to be "in the future" from right now. But relative to all the transitions in the file, it is used for all "future" datetimes after those transitions.
This means there is a possibility we may service 3.1 with the bigger fix. At least for now we don't have to I guess.
Hello, may I ask, is there a document indicating the meaning of each field in this binary time zone file?
@zhangjie0819 - The best document I've found is the man pages
Hi,Eric
I am sorry to return your software later, thank you for the information provided, and have provided me with a lot of help.
From: Eric Erhardt
Date: 2019-11-13 23:04
To: dotnet/corefx
CC: zhangjie0819; Mention
Subject: Re: [dotnet/corefx] IsDaylightSavingTime_CasablancaMultiYearDaylightSavings fails on rhel.8 (#42192)
@zhangjie0819 - The best document I've found is the man pages
http://man7.org/linux/man-pages/man5/tzfile.5.html
http://man7.org/linux/man-pages/man3/tzset.3.html
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
reopening for possible backport
@eerhardt may have mentioned already, I assume this affects 2.1 as well? If so we may want to service it as well, perhaps after a bake time in 3.1
Yes, this affects 2.1 as well. The 3.1 port hasn't been merged/shipped yet. Do you want it to bake for a while before doing the 2.1 port? Or should I prepare the 2.1 port sooner?
@eerhardt i suggest you throw the 2.1 port up in the normal way, and we can sit on it for a bit as seems best.
This issue is still open because the fix hasn't been ported to 2.1. We ported it to 3.1 in January.
However, I haven't heard any reports of issues on 2.1. Should we close this bug until we feel there is a need to port the fix to 2.1? Or do we think we should move forward with a 2.1 port?
At this point the bar to port to 2.1 is really high and we would not do it without evidence of signficant customer impact.
Sounds good to me. Closing for now. We can re-open once we see customer reports of this issue.
Most helpful comment
@eerhardt Can you reproduce with:
If so, this is being caused by the 'rearguard' data format. I found some information in the NEWS file and some in this blog.
This looks like the commit that adds this Casablanca negative DST change: https://github.com/eggert/tz/commit/8539a448ebc8897e40d62f16dc4d0ada3f07b3ca