I found a bug in tzdata2014f.tar.gz for Europe/Moscow or similar such as Europe/Volgograd
Hi Currently I’m preparing a document to update TZ for one of our customer in Russia due to the following TZ rule. I think I found a bug in tzdata2014f.tar.gz where the time did not move from 01:59:59 to 01:00:00 http://www.timeanddate.com/time/change/russia/moscow?year=2014 Using tzdata2014f.tar.gz $ ls -lrt /etc/localtime lrwxrwxrwx 1 root root 33 Aug 29 13:05 /etc/localtime -> /usr/share/zoneinfo/Europe/Moscow $ /usr/sbin/zdump -v /etc/localtime | grep 201 /etc/localtime Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400 /etc/localtime Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400 /etc/localtime Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400 /etc/localtime Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400 /etc/localtime Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800 Set the date to Sun Mar 27, 2011 (Russia is abolishing DST time) $ date -s "Sun MAR 27 01:59:00 MSK 2011" Sun Mar 27 01:59:00 MSK 2011 Monitor the date $ while true; do date; sleep 2; done: : Sun Mar 27 01:59:57 MSK 2011 Sun Mar 27 01:59:59 MSK 2011 Sun Mar 27 03:00:01 MSK 2011 ß good Sun Mar 27 03:00:03 MSK 2011 : Set the date to Sun Oct 26, 2014 (Russia back to European DST in October 2014) $ date -s "Sun OCT 26 01:59:00 MSK 2014" Sun Oct 26 01:59:00 MSK 2014 Monitor the date $ while true; do date; sleep 2; done : Sun Oct 26 01:59:57 MSK 2014 Sun Oct 26 01:59:59 MSK 2014 Sun Oct 26 02:00:01 MSK 2014 ß Not good. Should move from 01:59:59 to 01:00:00 Sun Oct 26 02:00:03 MSK 2014 : If I test again using Europe/Moscow for year 2010, it works fine for that year $ zdump -v Europe/Moscow | grep 2010 Europe/Moscow Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800 Europe/Moscow Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400 Europe/Moscow Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400 Europe/Moscow Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800 And it works just fine for Europe/Rome for year 2014 as well $ zdump -v /etc/localtime | grep 2014 /etc/localtime Sun Mar 30 00:59:59 2014 UTC = Sun Mar 30 01:59:59 2014 CET isdst=0 gmtoff=3600 /etc/localtime Sun Mar 30 01:00:00 2014 UTC = Sun Mar 30 03:00:00 2014 CEST isdst=1 gmtoff=7200 /etc/localtime Sun Oct 26 00:59:59 2014 UTC = Sun Oct 26 02:59:59 2014 CEST isdst=1 gmtoff=7200 /etc/localtime Sun Oct 26 01:00:00 2014 UTC = Sun Oct 26 02:00:00 2014 CET isdst=0 gmtoff=3600 Please tell me if it is a bug or something wrong in my testing. Best Regards AzharSupport EngineerKuala LumpurMalaysia
Azhar, What is the result when you run the following? $ zdump -vc 2014,2015 Europe/Moscow Do you see the expected transition reflected in that output, like this? Europe/Moscow -9223372036854775808 = NULL Europe/Moscow -9223372036854689408 = NULL Europe/Moscow Sat Oct 25 21:59:59 2014 UT = Sun Oct 26 01:59:59 2014 MSK isdst=0 Europe/Moscow Sat Oct 25 22:00:00 2014 UT = Sun Oct 26 01:00:00 2014 MSK isdst=0 Europe/Moscow 9223372036854689407 = NULL Europe/Moscow 9223372036854775807 = NULL Since your zdump output prints "UTC" instead of "UT", it looks like you're using a zdump version before 2013e. So you might be using older data than you think, too; the Russian transition for 2014-10-26 is present in 2014f and later. -- Tim Parenti On 29 August 2014 05:47, azhar saleh <seper5@hotmail.com> wrote:
Hi
Currently I’m preparing a document to update TZ for one of our customer in Russia due to the following TZ rule.
I think I found a bug in *tzdata2014f.tar.gz* where the time did not move from 01:59:59 to 01:00:00
http://www.timeanddate.com/time/change/russia/moscow?year=2014
Using *tzdata2014f.tar.gz*
$ ls -lrt /etc/localtime
lrwxrwxrwx 1 root root 33 Aug 29 13:05 */etc/localtime* -> /usr/share/zoneinfo/Europe/Moscow
$ /usr/sbin/zdump -v /etc/localtime | grep 201
/etc/localtime Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400
/etc/localtime Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400
/etc/localtime Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400
/etc/localtime Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
/etc/localtime Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
Set the date to Sun Mar 27, 2011 (*Russia is abolishing DST time)*
$ date -s "Sun MAR 27 01:59:00 MSK 2011"
Sun Mar 27 01:59:00 MSK 2011
Monitor the date
$ while true; do date; sleep 2; done:
:
Sun Mar 27 01:59:57 MSK 2011
Sun Mar 27 01:59:59 MSK 2011
Sun Mar 27 03:00:01 MSK 2011 ß good
Sun Mar 27 03:00:03 MSK 2011
:
Set the date to Sun Oct 26, 2014 (*Russia back to European DST in October 2014)*
$ date -s "Sun OCT 26 01:59:00 MSK 2014"
Sun Oct 26 01:59:00 MSK 2014
Monitor the date
$ while true; do date; sleep 2; done
:
Sun Oct 26 01:59:57 MSK 2014
Sun Oct 26 01:59:59 MSK 2014
Sun Oct 26 02:00:01 MSK 2014 *ß** Not good. Should move from 01:59:59 to 01:00:00*
Sun Oct 26 02:00:03 MSK 2014
:
If I test again using Europe/Moscow for year 2010, it works fine for that year
$ zdump -v Europe/Moscow | grep 2010
Europe/Moscow Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800
Europe/Moscow Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400
Europe/Moscow Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 *MSD* isdst=1 gmtoff=14400
Europe/Moscow Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 *MSK* isdst=0 gmtoff=10800
And it works just fine for Europe/Rome for year 2014 as well
$ zdump -v /etc/localtime | grep 2014
/etc/localtime Sun Mar 30 00:59:59 2014 UTC = Sun Mar 30 01:59:59 2014 CET isdst=0 gmtoff=3600
/etc/localtime Sun Mar 30 01:00:00 2014 UTC = Sun Mar 30 03:00:00 2014 CEST isdst=1 gmtoff=7200
/etc/localtime Sun Oct 26 00:59:59 2014 UTC = Sun Oct 26 02:59:59 2014 CEST isdst=1 gmtoff=7200
/etc/localtime Sun Oct 26 01:00:00 2014 UTC = Sun Oct 26 02:00:00 2014 CET isdst=0 gmtoff=3600
Please tell me if it is a bug or something wrong in my testing.
Best Regards
Azhar
Support Engineer
Kuala Lumpur
Malaysia
Hi Tim, Thanks for your reply. Below are the output of zdump -vc and zdump --version. $ zdump -vc 2014,2015 Europe/Moscow Europe/Moscow Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 23:16:09 1901 MSK isdst=0 gmtoff=9017 Europe/Moscow Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 23:16:09 1901 MSK isdst=0 gmtoff=9017 Europe/Moscow Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400 Europe/Moscow Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800 Europe/Moscow Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 06:14:07 2038 MSK isdst=0 gmtoff=10800 Europe/Moscow Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 06:14:07 2038 MSK isdst=0 gmtoff=10800 $ zdump --version @(#)zdump.c 7.64 So, can you confirmed if I having the older version of TZ data and not the latest tzdata2014f? If I'm having an older version of zdump, where can I get the latest of precompiled version of zdump (i.e. for CentOS) or do I need to compile it my self from tzcode2014? FYI, the client platform that I'm supporting does not have c or c++ compiler installed. If I'm having the correct tzdata2014f, how would the updated version of zdump help in solving the issue? Regards Azhar Date: Fri, 29 Aug 2014 07:59:51 -0400 Subject: Re: [tz] I found a bug in tzdata2014f.tar.gz for Europe/Moscow or similar such as Europe/Volgograd From: tim@timtimeonline.com To: seper5@hotmail.com CC: tz@iana.org Azhar, What is the result when you run the following? $ zdump -vc 2014,2015 Europe/Moscow Do you see the expected transition reflected in that output, like this? Europe/Moscow -9223372036854775808 = NULL Europe/Moscow -9223372036854689408 = NULL Europe/Moscow Sat Oct 25 21:59:59 2014 UT = Sun Oct 26 01:59:59 2014 MSK isdst=0 Europe/Moscow Sat Oct 25 22:00:00 2014 UT = Sun Oct 26 01:00:00 2014 MSK isdst=0 Europe/Moscow 9223372036854689407 = NULL Europe/Moscow 9223372036854775807 = NULL Since your zdump output prints "UTC" instead of "UT", it looks like you're using a zdump version before 2013e. So you might be using older data than you think, too; the Russian transition for 2014-10-26 is present in 2014f and later. -- Tim Parenti On 29 August 2014 05:47, azhar saleh <seper5@hotmail.com> wrote: Hi Currently I’m preparing a document to update TZ for one of our customer in Russia due to the following TZ rule. I think I found a bug in tzdata2014f.tar.gz where the time did not move from 01:59:59 to 01:00:00 http://www.timeanddate.com/time/change/russia/moscow?year=2014 Using tzdata2014f.tar.gz $ ls -lrt /etc/localtime lrwxrwxrwx 1 root root 33 Aug 29 13:05 /etc/localtime -> /usr/share/zoneinfo/Europe/Moscow $ /usr/sbin/zdump -v /etc/localtime | grep 201 /etc/localtime Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400 /etc/localtime Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400 /etc/localtime Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400 /etc/localtime Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400 /etc/localtime Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800 Set the date to Sun Mar 27, 2011 (Russia is abolishing DST time) $ date -s "Sun MAR 27 01:59:00 MSK 2011" Sun Mar 27 01:59:00 MSK 2011 Monitor the date $ while true; do date; sleep 2; done: : Sun Mar 27 01:59:57 MSK 2011 Sun Mar 27 01:59:59 MSK 2011 Sun Mar 27 03:00:01 MSK 2011 ß good Sun Mar 27 03:00:03 MSK 2011 : Set the date to Sun Oct 26, 2014 (Russia back to European DST in October 2014) $ date -s "Sun OCT 26 01:59:00 MSK 2014" Sun Oct 26 01:59:00 MSK 2014 Monitor the date $ while true; do date; sleep 2; done : Sun Oct 26 01:59:57 MSK 2014 Sun Oct 26 01:59:59 MSK 2014 Sun Oct 26 02:00:01 MSK 2014 ß Not good. Should move from 01:59:59 to 01:00:00 Sun Oct 26 02:00:03 MSK 2014 : If I test again using Europe/Moscow for year 2010, it works fine for that year $ zdump -v Europe/Moscow | grep 2010 Europe/Moscow Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800 Europe/Moscow Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400 Europe/Moscow Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400 Europe/Moscow Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800 And it works just fine for Europe/Rome for year 2014 as well $ zdump -v /etc/localtime | grep 2014 /etc/localtime Sun Mar 30 00:59:59 2014 UTC = Sun Mar 30 01:59:59 2014 CET isdst=0 gmtoff=3600 /etc/localtime Sun Mar 30 01:00:00 2014 UTC = Sun Mar 30 03:00:00 2014 CEST isdst=1 gmtoff=7200 /etc/localtime Sun Oct 26 00:59:59 2014 UTC = Sun Oct 26 02:59:59 2014 CEST isdst=1 gmtoff=7200 /etc/localtime Sun Oct 26 01:00:00 2014 UTC = Sun Oct 26 02:00:00 2014 CET isdst=0 gmtoff=3600 Please tell me if it is a bug or something wrong in my testing. Best Regards AzharSupport EngineerKuala Lumpur Malaysia
Azhar, Whether you have an old version of zdump would not be the problem. The output from zdump -vc 2014,2015 Europe/Moscow which you provided shows that you do indeed have data which is at least as recent as 2014f, which is what you need for the upcoming Russian changes. As Arthur David Olson mentioned in http://mm.icann.org/pipermail/tz/2014-August/021547.html, the most likely scenario comes from the fact that the hour from 01:00:00 to 01:59:59 is repeated in zones like Europe/Moscow on 2014-10-26. So, when you run: date -s "Sun Oct 26 01:59:00 MSK 2014" ...your system is assuming that you mean the *second* occurrence of 01:59:00, which is 59 minutes *after* the changeover from 01:59:59 back to 01:00:00 has already happened. You can get around this by setting the date according to UTC, one minute before the expected changeover: date -s "Sat Oct 25 21:59:00 UTC 2014" -u Alternatively, if you're very patient, you could set the time to 00:59:00, which only happens once that day: date -s "Sun Oct 26 00:59:00 MSK 2014" ...and then wait 61 minutes to make sure the changeover happens as expected. -- Tim Parenti On 2 September 2014 01:43, azhar saleh <seper5@hotmail.com> wrote:
Hi Tim,
Thanks for your reply. Below are the output of zdump -vc and zdump --version.
*$ zdump -vc 2014,2015 Europe/Moscow* Europe/Moscow Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 23:16:09 1901 MSK isdst=0 gmtoff=9017 Europe/Moscow Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 23:16:09 1901 MSK isdst=0 gmtoff=9017
*Europe/Moscow Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400Europe/Moscow Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800*Europe/Moscow Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 06:14:07 2038 MSK isdst=0 gmtoff=10800 Europe/Moscow Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 06:14:07 2038 MSK isdst=0 gmtoff=10800
*$ zdump --version* *@(#)zdump.c 7.64*
So, can you confirmed if I having the older version of TZ data and not the latest tzdata2014f?
If I'm having an older version of zdump, where can I get the latest of precompiled version of zdump (i.e. for CentOS) or do I need to compile it my self from tzcode2014? FYI, the client platform that I'm supporting does not have c or c++ compiler installed.
If I'm having the correct tzdata2014f, how would the updated version of zdump help in solving the issue?
Regards Azhar
------------------------------ Date: Fri, 29 Aug 2014 07:59:51 -0400 Subject: Re: [tz] I found a bug in tzdata2014f.tar.gz for Europe/Moscow or similar such as Europe/Volgograd From: tim@timtimeonline.com To: seper5@hotmail.com CC: tz@iana.org
Azhar,
What is the result when you run the following? $ zdump -vc 2014,2015 Europe/Moscow
Do you see the expected transition reflected in that output, like this? Europe/Moscow -9223372036854775808 = NULL Europe/Moscow -9223372036854689408 = NULL Europe/Moscow Sat Oct 25 21:59:59 2014 UT = Sun Oct 26 01:59:59 2014 MSK isdst=0 Europe/Moscow Sat Oct 25 22:00:00 2014 UT = Sun Oct 26 01:00:00 2014 MSK isdst=0 Europe/Moscow 9223372036854689407 = NULL Europe/Moscow 9223372036854775807 = NULL
Since your zdump output prints "UTC" instead of "UT", it looks like you're using a zdump version before 2013e. So you might be using older data than you think, too; the Russian transition for 2014-10-26 is present in 2014f and later.
-- Tim Parenti
On 29 August 2014 05:47, azhar saleh <seper5@hotmail.com> wrote:
Hi
Currently I’m preparing a document to update TZ for one of our customer in Russia due to the following TZ rule.
I think I found a bug in *tzdata2014f.tar.gz* where the time did not move from 01:59:59 to 01:00:00
http://www.timeanddate.com/time/change/russia/moscow?year=2014
Using *tzdata2014f.tar.gz*
$ ls -lrt /etc/localtime
lrwxrwxrwx 1 root root 33 Aug 29 13:05 */etc/localtime* -> /usr/share/zoneinfo/Europe/Moscow
$ /usr/sbin/zdump -v /etc/localtime | grep 201
/etc/localtime Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400
/etc/localtime Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400
/etc/localtime Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400
/etc/localtime Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
/etc/localtime Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
Set the date to Sun Mar 27, 2011 (*Russia is abolishing DST time)*
$ date -s "Sun MAR 27 01:59:00 MSK 2011"
Sun Mar 27 01:59:00 MSK 2011
Monitor the date
$ while true; do date; sleep 2; done:
:
Sun Mar 27 01:59:57 MSK 2011
Sun Mar 27 01:59:59 MSK 2011
Sun Mar 27 03:00:01 MSK 2011 ß good
Sun Mar 27 03:00:03 MSK 2011
:
Set the date to Sun Oct 26, 2014 (*Russia back to European DST in October 2014)*
$ date -s "Sun OCT 26 01:59:00 MSK 2014"
Sun Oct 26 01:59:00 MSK 2014
Monitor the date
$ while true; do date; sleep 2; done
:
Sun Oct 26 01:59:57 MSK 2014
Sun Oct 26 01:59:59 MSK 2014
Sun Oct 26 02:00:01 MSK 2014 *ß** Not good. Should move from 01:59:59 to 01:00:00*
Sun Oct 26 02:00:03 MSK 2014
:
If I test again using Europe/Moscow for year 2010, it works fine for that year
$ zdump -v Europe/Moscow | grep 2010
Europe/Moscow Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800
Europe/Moscow Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400
Europe/Moscow Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 *MSD* isdst=1 gmtoff=14400
Europe/Moscow Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 *MSK* isdst=0 gmtoff=10800
And it works just fine for Europe/Rome for year 2014 as well
$ zdump -v /etc/localtime | grep 2014
/etc/localtime Sun Mar 30 00:59:59 2014 UTC = Sun Mar 30 01:59:59 2014 CET isdst=0 gmtoff=3600
/etc/localtime Sun Mar 30 01:00:00 2014 UTC = Sun Mar 30 03:00:00 2014 CEST isdst=1 gmtoff=7200
/etc/localtime Sun Oct 26 00:59:59 2014 UTC = Sun Oct 26 02:59:59 2014 CEST isdst=1 gmtoff=7200
/etc/localtime Sun Oct 26 01:00:00 2014 UTC = Sun Oct 26 02:00:00 2014 CET isdst=0 gmtoff=3600
Please tell me if it is a bug or something wrong in my testing.
Best Regards
Azhar
Support Engineer
Kuala Lumpur
Malaysia
Hi Tim and all, I understand now. Tested and it works. Thanks Azhar Date: Tue, 2 Sep 2014 02:11:47 -0400 Subject: Re: [tz] I found a bug in tzdata2014f.tar.gz for Europe/Moscow or similar such as Europe/Volgograd From: tim@timtimeonline.com To: seper5@hotmail.com CC: arthurdavidolson@gmail.com; tz@iana.org Azhar, Whether you have an old version of zdump would not be the problem. The output from zdump -vc 2014,2015 Europe/Moscow which you provided shows that you do indeed have data which is at least as recent as 2014f, which is what you need for the upcoming Russian changes. As Arthur David Olson mentioned in http://mm.icann.org/pipermail/tz/2014-August/021547.html, the most likely scenario comes from the fact that the hour from 01:00:00 to 01:59:59 is repeated in zones like Europe/Moscow on 2014-10-26. So, when you run: date -s "Sun Oct 26 01:59:00 MSK 2014" ...your system is assuming that you mean the second occurrence of 01:59:00, which is 59 minutes after the changeover from 01:59:59 back to 01:00:00 has already happened. You can get around this by setting the date according to UTC, one minute before the expected changeover: date -s "Sat Oct 25 21:59:00 UTC 2014" -u Alternatively, if you're very patient, you could set the time to 00:59:00, which only happens once that day: date -s "Sun Oct 26 00:59:00 MSK 2014" ...and then wait 61 minutes to make sure the changeover happens as expected. -- Tim Parenti On 2 September 2014 01:43, azhar saleh <seper5@hotmail.com> wrote: Hi Tim, Thanks for your reply. Below are the output of zdump -vc and zdump --version. $ zdump -vc 2014,2015 Europe/Moscow Europe/Moscow Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 23:16:09 1901 MSK isdst=0 gmtoff=9017 Europe/Moscow Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 23:16:09 1901 MSK isdst=0 gmtoff=9017 Europe/Moscow Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400 Europe/Moscow Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800 Europe/Moscow Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 06:14:07 2038 MSK isdst=0 gmtoff=10800 Europe/Moscow Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 06:14:07 2038 MSK isdst=0 gmtoff=10800 $ zdump --version @(#)zdump.c 7.64 So, can you confirmed if I having the older version of TZ data and not the latest tzdata2014f? If I'm having an older version of zdump, where can I get the latest of precompiled version of zdump (i.e. for CentOS) or do I need to compile it my self from tzcode2014? FYI, the client platform that I'm supporting does not have c or c++ compiler installed. If I'm having the correct tzdata2014f, how would the updated version of zdump help in solving the issue? Regards Azhar Date: Fri, 29 Aug 2014 07:59:51 -0400 Subject: Re: [tz] I found a bug in tzdata2014f.tar.gz for Europe/Moscow or similar such as Europe/Volgograd From: tim@timtimeonline.com To: seper5@hotmail.com CC: tz@iana.org Azhar, What is the result when you run the following? $ zdump -vc 2014,2015 Europe/Moscow Do you see the expected transition reflected in that output, like this? Europe/Moscow -9223372036854775808 = NULL Europe/Moscow -9223372036854689408 = NULL Europe/Moscow Sat Oct 25 21:59:59 2014 UT = Sun Oct 26 01:59:59 2014 MSK isdst=0 Europe/Moscow Sat Oct 25 22:00:00 2014 UT = Sun Oct 26 01:00:00 2014 MSK isdst=0 Europe/Moscow 9223372036854689407 = NULL Europe/Moscow 9223372036854775807 = NULL Since your zdump output prints "UTC" instead of "UT", it looks like you're using a zdump version before 2013e. So you might be using older data than you think, too; the Russian transition for 2014-10-26 is present in 2014f and later. -- Tim Parenti On 29 August 2014 05:47, azhar saleh <seper5@hotmail.com> wrote: Hi Currently I’m preparing a document to update TZ for one of our customer in Russia due to the following TZ rule. I think I found a bug in tzdata2014f.tar.gz where the time did not move from 01:59:59 to 01:00:00 http://www.timeanddate.com/time/change/russia/moscow?year=2014 Using tzdata2014f.tar.gz $ ls -lrt /etc/localtime lrwxrwxrwx 1 root root 33 Aug 29 13:05 /etc/localtime -> /usr/share/zoneinfo/Europe/Moscow $ /usr/sbin/zdump -v /etc/localtime | grep 201 /etc/localtime Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400 /etc/localtime Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400 /etc/localtime Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400 /etc/localtime Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400 /etc/localtime Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800 Set the date to Sun Mar 27, 2011 (Russia is abolishing DST time) $ date -s "Sun MAR 27 01:59:00 MSK 2011" Sun Mar 27 01:59:00 MSK 2011 Monitor the date $ while true; do date; sleep 2; done: : Sun Mar 27 01:59:57 MSK 2011 Sun Mar 27 01:59:59 MSK 2011 Sun Mar 27 03:00:01 MSK 2011 ß good Sun Mar 27 03:00:03 MSK 2011 : Set the date to Sun Oct 26, 2014 (Russia back to European DST in October 2014) $ date -s "Sun OCT 26 01:59:00 MSK 2014" Sun Oct 26 01:59:00 MSK 2014 Monitor the date $ while true; do date; sleep 2; done : Sun Oct 26 01:59:57 MSK 2014 Sun Oct 26 01:59:59 MSK 2014 Sun Oct 26 02:00:01 MSK 2014 ß Not good. Should move from 01:59:59 to 01:00:00 Sun Oct 26 02:00:03 MSK 2014 : If I test again using Europe/Moscow for year 2010, it works fine for that year $ zdump -v Europe/Moscow | grep 2010 Europe/Moscow Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800 Europe/Moscow Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400 Europe/Moscow Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400 Europe/Moscow Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800 And it works just fine for Europe/Rome for year 2014 as well $ zdump -v /etc/localtime | grep 2014 /etc/localtime Sun Mar 30 00:59:59 2014 UTC = Sun Mar 30 01:59:59 2014 CET isdst=0 gmtoff=3600 /etc/localtime Sun Mar 30 01:00:00 2014 UTC = Sun Mar 30 03:00:00 2014 CEST isdst=1 gmtoff=7200 /etc/localtime Sun Oct 26 00:59:59 2014 UTC = Sun Oct 26 02:59:59 2014 CEST isdst=1 gmtoff=7200 /etc/localtime Sun Oct 26 01:00:00 2014 UTC = Sun Oct 26 02:00:00 2014 CET isdst=0 gmtoff=3600 Please tell me if it is a bug or something wrong in my testing. Best Regards Azhar Support Engineer Kuala Lumpur Malaysia
(I've also sent this reply directly to Azhar.)
$ date -s "Sun OCT 26 01:59:00 MSK 2014"
Sun Oct 26 01:59:00 MSK 2014 Monitor the date
$ while true; do date; sleep 2; done Sun Oct 26 01:59:57 MSK 2014
Sun Oct 26 01:59:59 MSK 2014 Sun Oct 26 02:00:01 MSK 2014 *ß** Not good. Should move from 01:59:59 to 01:00:00* >
Sun Oct 26 02:00:03 MSK 2014
The situation here is that there are two instants in Moscow in 2014 when wall clocks are to read 1:59:00: one just prior to when clocks are adjusted, and one an hour after that. When you use the date command as above, it must pick which of the two instants to use; here it has picked the second one, so you don't see a clock shift after a couple of seconds. You should be able to verify this by modifying your script to output both Moscow and universal time. @dashdashado On Fri, Aug 29, 2014 at 5:47 AM, azhar saleh <seper5@hotmail.com> wrote:
Hi
Currently I’m preparing a document to update TZ for one of our customer in Russia due to the following TZ rule.
I think I found a bug in *tzdata2014f.tar.gz* where the time did not move from 01:59:59 to 01:00:00
http://www.timeanddate.com/time/change/russia/moscow?year=2014
Using *tzdata2014f.tar.gz*
$ ls -lrt /etc/localtime
lrwxrwxrwx 1 root root 33 Aug 29 13:05 */etc/localtime* -> /usr/share/zoneinfo/Europe/Moscow
$ /usr/sbin/zdump -v /etc/localtime | grep 201
/etc/localtime Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400
/etc/localtime Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 MSD isdst=1 gmtoff=14400
/etc/localtime Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800
/etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400
/etc/localtime Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
/etc/localtime Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
Set the date to Sun Mar 27, 2011 (*Russia is abolishing DST time)*
$ date -s "Sun MAR 27 01:59:00 MSK 2011"
Sun Mar 27 01:59:00 MSK 2011
Monitor the date
$ while true; do date; sleep 2; done:
:
Sun Mar 27 01:59:57 MSK 2011
Sun Mar 27 01:59:59 MSK 2011
Sun Mar 27 03:00:01 MSK 2011 ß good
Sun Mar 27 03:00:03 MSK 2011
:
Set the date to Sun Oct 26, 2014 (*Russia back to European DST in October 2014)*
$ date -s "Sun OCT 26 01:59:00 MSK 2014"
Sun Oct 26 01:59:00 MSK 2014
Monitor the date
$ while true; do date; sleep 2; done
:
Sun Oct 26 01:59:57 MSK 2014
Sun Oct 26 01:59:59 MSK 2014
Sun Oct 26 02:00:01 MSK 2014 *ß** Not good. Should move from 01:59:59 to 01:00:00*
Sun Oct 26 02:00:03 MSK 2014
:
If I test again using Europe/Moscow for year 2010, it works fine for that year
$ zdump -v Europe/Moscow | grep 2010
Europe/Moscow Sat Mar 27 22:59:59 2010 UTC = Sun Mar 28 01:59:59 2010 MSK isdst=0 gmtoff=10800
Europe/Moscow Sat Mar 27 23:00:00 2010 UTC = Sun Mar 28 03:00:00 2010 MSD isdst=1 gmtoff=14400
Europe/Moscow Sat Oct 30 22:59:59 2010 UTC = Sun Oct 31 02:59:59 2010 *MSD* isdst=1 gmtoff=14400
Europe/Moscow Sat Oct 30 23:00:00 2010 UTC = Sun Oct 31 02:00:00 2010 *MSK* isdst=0 gmtoff=10800
And it works just fine for Europe/Rome for year 2014 as well
$ zdump -v /etc/localtime | grep 2014
/etc/localtime Sun Mar 30 00:59:59 2014 UTC = Sun Mar 30 01:59:59 2014 CET isdst=0 gmtoff=3600
/etc/localtime Sun Mar 30 01:00:00 2014 UTC = Sun Mar 30 03:00:00 2014 CEST isdst=1 gmtoff=7200
/etc/localtime Sun Oct 26 00:59:59 2014 UTC = Sun Oct 26 02:59:59 2014 CEST isdst=1 gmtoff=7200
/etc/localtime Sun Oct 26 01:00:00 2014 UTC = Sun Oct 26 02:00:00 2014 CET isdst=0 gmtoff=3600
Please tell me if it is a bug or something wrong in my testing.
Best Regards
Azhar
Support Engineer
Kuala Lumpur
Malaysia
participants (3)
-
Arthur David Olson -
azhar saleh -
Tim Parenti