proposed time zone package changes (Samoa, Factory, et al.)
Below find proposed time zone package changes; the executive summary: * Makefile Change LOCALTIME default from "Factory" to "GMT"; do not compile "factory" file (but keep it in the distribution). * Theory Remove reference to "Factory" zone. * australasia Change end of DST in Samoa in 2011 from 2011-04-03 0:00 to 2011-04-03 1:00 (thanks to Raymond Hughes for a reference). * localtime.c Initialize ttinfo structures filled by tzparse (thanks to Ravindra for reporting a valgrind warning). * zic.c Fix generation of POSIX strings for zones with rules using "weekday<=n" forms of dates (thanks to Lei Liu for finding the problem). Also, limit output for non-POSIX-specificable zones defined to follow the same rules every year. (Note that no zones of either of the above types appear in the distribution; these changes cater to add-on zones). If no problems are found, 2010n will appear on 2010-10-25. --ado diff -r -c old/Makefile new/Makefile *** old/Makefile Mon Sep 27 09:24:25 2010 --- new/Makefile Tue Oct 12 12:36:50 2010 *************** *** 1,5 **** # <pre> ! # @(#)Makefile 8.8 # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. --- 1,5 ---- # <pre> ! # @(#)Makefile 8.9 # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. *************** *** 12,18 **** # make zonenames # to get a list of the values you can use for LOCALTIME. ! LOCALTIME= Factory # If you want something other than Eastern United States time as a template # for handling POSIX-style time zone environment variables, --- 12,18 ---- # make zonenames # to get a list of the values you can use for LOCALTIME. ! LOCALTIME= GMT # If you want something other than Eastern United States time as a template # for handling POSIX-style time zone environment variables, *************** *** 262,269 **** DOCS= README Theory $(MANS) date.1 Makefile PRIMARY_YDATA= africa antarctica asia australasia \ europe northamerica southamerica ! YDATA= $(PRIMARY_YDATA) pacificnew etcetera factory backward ! NDATA= systemv SDATA= solar87 solar88 solar89 TDATA= $(YDATA) $(NDATA) $(SDATA) TABDATA= iso3166.tab zone.tab --- 262,269 ---- DOCS= README Theory $(MANS) date.1 Makefile PRIMARY_YDATA= africa antarctica asia australasia \ europe northamerica southamerica ! YDATA= $(PRIMARY_YDATA) pacificnew etcetera backward ! NDATA= systemv factory SDATA= solar87 solar88 solar89 TDATA= $(YDATA) $(NDATA) $(SDATA) TABDATA= iso3166.tab zone.tab diff -r -c old/Theory new/Theory *** old/Theory Mon Sep 27 09:24:25 2010 --- new/Theory Tue Oct 12 12:36:50 2010 *************** *** 1,4 **** ! @(#)Theory 8.4 This file is in the public domain, so clarified as of 2009-05-17 by Arthur David Olson. --- 1,4 ---- ! @(#)Theory 8.5 This file is in the public domain, so clarified as of 2009-05-17 by Arthur David Olson. *************** *** 287,294 **** See the file `backward' for most of these older names (e.g. `US/Eastern' instead of `America/New_York'). The other old-fashioned names still supported are ! `WET', `CET', `MET', `EET' (see the file `europe'), ! and `Factory' (see the file `factory'). ----- Time zone abbreviations ----- --- 287,293 ---- See the file `backward' for most of these older names (e.g. `US/Eastern' instead of `America/New_York'). The other old-fashioned names still supported are ! `WET', `CET', `MET', and `EET' (see the file `europe'). ----- Time zone abbreviations ----- diff -r -c old/australasia new/australasia *** old/australasia Mon Sep 27 09:24:27 2010 --- new/australasia Tue Oct 12 13:14:56 2010 *************** *** 1,5 **** # <pre> ! # @(#)australasia 8.18 # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. --- 1,5 ---- # <pre> ! # @(#)australasia 8.19 # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. *************** *** 487,497 **** # http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%20200... # </a> Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:26:56 - LMT 1911 -11:30 - SAMT 1950 # Samoa Time -11:00 - WST 2010 Sep 26 ! -11:00 1:00 WSDT 2011 Apr 3 -11:00 - WST # Solomon Is --- 487,507 ---- # http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%20200... # </a> + # From Raymond Hughes (2010-10-07): + # Please see + # <a href="http://www.mcil.gov.ws"> + # http://www.mcil.gov.ws + # </a>, + # the Ministry of Commerce, Industry and Labour (sideframe) "Last Sunday + # September 2010 (26/09/10) - adjust clocks forward from 12:00 midnight + # to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks + # backwards from 1:00am to 12:00am" + Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 -11:26:56 - LMT 1911 -11:30 - SAMT 1950 # Samoa Time -11:00 - WST 2010 Sep 26 ! -11:00 1:00 WSDT 2011 Apr 3 1:00 -11:00 - WST # Solomon Is diff -r -c old/localtime.c new/localtime.c *** old/localtime.c Mon Sep 27 09:24:26 2010 --- new/localtime.c Tue Oct 12 12:36:51 2010 *************** *** 5,11 **** #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)localtime.c 8.14"; #endif /* !defined NOID */ #endif /* !defined lint */ --- 5,11 ---- #ifndef lint #ifndef NOID ! static char elsieid[] = "@(#)localtime.c 8.15"; #endif /* !defined NOID */ #endif /* !defined lint */ *************** *** 914,919 **** --- 914,920 ---- register unsigned char * typep; register char * cp; register int load_result; + static struct ttinfo zttinfo; INITIALIZE(dstname); stdname = name; *************** *** 986,991 **** --- 987,993 ---- /* ** Two transitions per year, from EPOCH_YEAR forward. */ + sp->ttis[0] = sp->ttis[1] = zttinfo; sp->ttis[0].tt_gmtoff = -dstoffset; sp->ttis[0].tt_isdst = 1; sp->ttis[0].tt_abbrind = stdlen + 1; *************** *** 1099,1106 **** } /* ** Finally, fill in ttis. - ** ttisstd and ttisgmt need not be handled. */ sp->ttis[0].tt_gmtoff = -stdoffset; sp->ttis[0].tt_isdst = FALSE; sp->ttis[0].tt_abbrind = 0; --- 1101,1108 ---- } /* ** Finally, fill in ttis. */ + sp->ttis[0] = sp->ttis[1] = zttinfo; sp->ttis[0].tt_gmtoff = -stdoffset; sp->ttis[0].tt_isdst = FALSE; sp->ttis[0].tt_abbrind = 0; *************** *** 1113,1118 **** --- 1115,1121 ---- dstlen = 0; sp->typecnt = 1; /* only standard time */ sp->timecnt = 0; + sp->ttis[0] = zttinfo; sp->ttis[0].tt_gmtoff = -stdoffset; sp->ttis[0].tt_isdst = 0; sp->ttis[0].tt_abbrind = 0; diff -r -c old/zic.c new/zic.c *** old/zic.c Mon Sep 27 09:24:26 2010 --- new/zic.c Tue Oct 12 13:37:29 2010 *************** *** 3,9 **** ** 2006-07-17 by Arthur David Olson. */ ! static char elsieid[] = "@(#)zic.c 8.22"; #include "private.h" #include "locale.h" --- 3,9 ---- ** 2006-07-17 by Arthur David Olson. */ ! static char elsieid[] = "@(#)zic.c 8.24"; #include "private.h" #include "locale.h" *************** *** 1881,1896 **** register int week; if (rp->r_dycode == DC_DOWGEQ) { ! week = 1 + rp->r_dayofmonth / DAYSPERWEEK; ! if ((week - 1) * DAYSPERWEEK + 1 != rp->r_dayofmonth) return -1; } else if (rp->r_dycode == DC_DOWLEQ) { if (rp->r_dayofmonth == len_months[1][rp->r_month]) week = 5; else { ! week = 1 + rp->r_dayofmonth / DAYSPERWEEK; ! if (week * DAYSPERWEEK - 1 != rp->r_dayofmonth) return -1; } } else return -1; /* "cannot happen" */ (void) sprintf(result, "M%d.%d.%d", --- 1881,1896 ---- register int week; if (rp->r_dycode == DC_DOWGEQ) { ! if ((rp->r_dayofmonth % DAYSPERWEEK) != 1) return -1; + week = 1 + rp->r_dayofmonth / DAYSPERWEEK; } else if (rp->r_dycode == DC_DOWLEQ) { if (rp->r_dayofmonth == len_months[1][rp->r_month]) week = 5; else { ! if ((rp->r_dayofmonth % DAYSPERWEEK) != 0) return -1; + week = rp->r_dayofmonth / DAYSPERWEEK; } } else return -1; /* "cannot happen" */ (void) sprintf(result, "M%d.%d.%d", *************** *** 2018,2023 **** --- 2018,2024 ---- register char * envvar; register int max_abbr_len; register int max_envvar_len; + register int prodstic; /* all rules are min to max */ max_abbr_len = 2 + max_format_len + max_abbrvar_len; max_envvar_len = 2 * max_abbr_len + 5 * 9; *************** *** 2032,2037 **** --- 2033,2039 ---- timecnt = 0; typecnt = 0; charcnt = 0; + prodstic = zonecount == 1; /* ** Thanks to Earl Chew ** for noting the need to unconditionally initialize startttisstd. *************** *** 2053,2058 **** --- 2055,2062 ---- updateminmax(rp->r_loyear); if (rp->r_hiwasnum) updateminmax(rp->r_hiyear); + if (rp->r_lowasnum || rp->r_hiwasnum) + prodstic = FALSE; } } /* *************** *** 2075,2080 **** --- 2079,2094 ---- if (max_year <= INT_MAX - YEARSPERREPEAT) max_year += YEARSPERREPEAT; else max_year = INT_MAX; + /* + ** Regardless of any of the above, + ** for a "proDSTic" zone which specifies that its rules + ** always have and always will be in effect, + ** we only need one cycle to define the zone. + */ + if (prodstic) { + min_year = 1900; + max_year = min_year + YEARSPERREPEAT; + } } /* ** For the benefit of older systems,
Rule Turkey 1977 1978 - Apr Sun>=1 0:00 1:00 S Rule Turkey 1977 only - Oct 16 0:00 0 - Rule Turkey 1979 1980 - Apr Sun>=1 3:00 1:00 S ------- Did Turkey go off Summer Time in 1978? C. Manwaring
The "europe" file rules represent Turkey changing time zones in 1978 by moving its clocks forward twice in the same year; Turkish clocks weren't turned back in 1978. --ado -----Original Message----- From: Zoidiasoft Tech [mailto:tech@astrology-x-files.com] Sent: Saturday, October 16, 2010 12:59 PM To: tz@lecserver.nci.nih.gov Subject: Turkey Rules late 70's Rule Turkey 1977 1978 - Apr Sun>=1 0:00 1:00 S Rule Turkey 1977 only - Oct 16 0:00 0 - Rule Turkey 1979 1980 - Apr Sun>=1 3:00 1:00 S ------- Did Turkey go off Summer Time in 1978? C. Manwaring
I am coming back on this subject of time change in Turkey on 15 October 1978. TZ has Rule Turkey 1977 1978 - Apr Sun>=1 0:00 1:00 S Rule Turkey 1977 only - Oct 16 0:00 0 - Rule Turkey 1979 1980 - Apr Sun>=1 3:00 1:00 S Rule Turkey 1979 1982 - Oct Mon>=11 0:00 0 - AND Zone Europe/Istanbul 1:55:52 - LMT 1880 1:56:56 - IMT 1910 Oct # Istanbul Mean Time? 2:00 Turkey EE%sT 1978 Oct 15 3:00 Turkey +03/+04 1985 Apr 20 zdump -V -c 1977,1980 Europe/Istanbul Europe/Istanbul Sat Apr 2 21:59:59 1977 UT = Sat Apr 2 23:59:59 1977 EET isdst=0 gmtoff=7200 Europe/Istanbul Sat Apr 2 22:00:00 1977 UT = Sun Apr 3 01:00:00 1977 EEST isdst=1 gmtoff=10800 Europe/Istanbul Sat Oct 15 20:59:59 1977 UT = Sat Oct 15 23:59:59 1977 EEST isdst=1 gmtoff=10800 Europe/Istanbul Sat Oct 15 21:00:00 1977 UT = Sat Oct 15 23:00:00 1977 EET isdst=0 gmtoff=7200 Europe/Istanbul Sat Apr 1 21:59:59 1978 UT = Sat Apr 1 23:59:59 1978 EET isdst=0 gmtoff=7200 Europe/Istanbul Sat Apr 1 22:00:00 1978 UT = Sun Apr 2 01:00:00 1978 EEST isdst=1 gmtoff=10800 Europe/Istanbul Sat Oct 14 20:59:59 1978 UT = Sat Oct 14 23:59:59 1978 EEST isdst=1 gmtoff=10800 Europe/Istanbul Sat Oct 14 21:00:00 1978 UT = Sun Oct 15 01:00:00 1978 +04 isdst=1 gmtoff=14400 Europe/Istanbul Sun Oct 14 19:59:59 1979 UT = Sun Oct 14 23:59:59 1979 +04 isdst=1 gmtoff=14400 Europe/Istanbul Sun Oct 14 20:00:00 1979 UT = Sun Oct 14 23:00:00 1979 +03 isdst=0 gmtoff=10800 According to this, Turkey did not only not turn the hour back from +3h to +2h as otherwise in October at the end of DST, but in 1978 moved from +3h to +4h on 14 Oct 1978. It did move standard time forward AND did not end DST. Is there any source for this fact? The comment does not show any. Or is it a bug? Arthur Olson writes that the clocks were not back. But were they actually turned forward? On 21.10.10 16:35, Olson, Arthur David (NIH/NCI) [E] wrote:
The "europe" file rules represent Turkey changing time zones in 1978 by moving its clocks forward twice in the same year; Turkish clocks weren't turned back in 1978.
--ado
-----Original Message----- From: Zoidiasoft Tech [mailto:tech@astrology-x-files.com] Sent: Saturday, October 16, 2010 12:59 PM To: tz@lecserver.nci.nih.gov Subject: Turkey Rules late 70's
Rule Turkey 1977 1978 - Apr Sun>=1 0:00 1:00 S Rule Turkey 1977 only - Oct 16 0:00 0 - Rule Turkey 1979 1980 - Apr Sun>=1 3:00 1:00 S
-------
Did Turkey go off Summer Time in 1978?
C. Manwaring
This source http://www.astrolojidergisi.com/yazsaati.htm has researched the time zone history of Turkey, based on newspaper archives and official documents. All goverment documents in Turkey since 1921 are in a public archive, called reszmi gazete http://www.resmigazete.gov.tr/ The source http://www.astrolojidergisi.com/yazsaati.htm has at the bottom a link Ekler, which I believe means 'notes', and which leads to screen shots of documents. There are several pages of screen shots http://www.astrolojidergisi.com/yazsaati-ekler-1-40li-yillar.htm http://www.astrolojidergisi.com/yazsaati-ekler-4-70li-yillar.htm http://www.astrolojidergisi.com/yazsaati-ekler-5-80li-yillar.htm My problem is that I do not understand Turkish. To me, the source seems believable and well researched. I think that TZ zone Europe/Istanbul needs to be revised.
Alois Treindl wrote:
This source http://www.astrolojidergisi.com/yazsaati.htm has researched the time zone history of Turkey, based on newspaper archives and official documents.
Thanks for the pointer to Oya Vulaş's table. It cites and reproduces quite a few good sources, so I adjusted tzdb's timestamps to match its timestamps for the period 1940/1985 and installed the attached proposed patch into the development version on GitHub. Vulaş does not cover the period before 1940 so we'll stick to Shanks's dicier data for that. For 1986 on, Vulaş agrees with the official sources we already cite. I think this resolves the issue "Turkey Rules late 70's - October 1978 bug?" that you mentioned a bit earlier.
Many thanks for the update. There is still a difference for October 1940. http://www.astrolojidergisi.com/yazsaati.htm has 6 Oct 1940 0:00 and you have 5 Oct 1940 0:00 On 28.08.19 09:29, Paul Eggert wrote:
Alois Treindl wrote:
This source http://www.astrolojidergisi.com/yazsaati.htm has researched the time zone history of Turkey, based on newspaper archives and official documents.
Thanks for the pointer to Oya Vulaş's table. It cites and reproduces quite a few good sources, so I adjusted tzdb's timestamps to match its timestamps for the period 1940/1985 and installed the attached proposed patch into the development version on GitHub. Vulaş does not cover the period before 1940 so we'll stick to Shanks's dicier data for that. For 1986 on, Vulaş agrees with the official sources we already cite.
I think this resolves the issue "Turkey Rules late 70's - October 1978 bug?" that you mentioned a bit earlier.
participants (5)
-
Alois Treindl
-
Arthur David Olson
-
Olson, Arthur David (NIH/NCI) [E]
-
Paul Eggert
-
Zoidiasoft Tech