diff options
Diffstat (limited to 'timezone')
-rw-r--r-- | timezone/africa | 73 | ||||
-rw-r--r-- | timezone/antarctica | 32 | ||||
-rw-r--r-- | timezone/asia | 315 | ||||
-rw-r--r-- | timezone/australasia | 52 | ||||
-rw-r--r-- | timezone/backward | 3 | ||||
-rw-r--r-- | timezone/checktab.awk | 2 | ||||
-rw-r--r-- | timezone/europe | 254 | ||||
-rw-r--r-- | timezone/ialloc.c | 7 | ||||
-rw-r--r-- | timezone/iso3166.tab | 12 | ||||
-rw-r--r-- | timezone/northamerica | 614 | ||||
-rw-r--r-- | timezone/private.h | 83 | ||||
-rw-r--r-- | timezone/scheck.c | 7 | ||||
-rw-r--r-- | timezone/southamerica | 193 | ||||
-rw-r--r-- | timezone/tzfile.h | 23 | ||||
-rw-r--r-- | timezone/tzselect.ksh | 2 | ||||
-rw-r--r-- | timezone/zdump.c | 37 | ||||
-rw-r--r-- | timezone/zic.c | 709 | ||||
-rw-r--r-- | timezone/zone.tab | 43 |
18 files changed, 1677 insertions, 784 deletions
diff --git a/timezone/africa b/timezone/africa index 29625df934..d73d340751 100644 --- a/timezone/africa +++ b/timezone/africa @@ -1,15 +1,15 @@ -# @(#)africa 8.1 +# @(#)africa 8.5 # <pre> # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). -# From Paul Eggert (1999-03-22): +# From Paul Eggert (2006-03-22): # # A good source for time zone historical data outside the U.S. is -# Thomas G. Shanks, The International Atlas (5th edition), -# San Diego: ACS Publications, Inc. (1999). +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), +# San Diego: ACS Publications, Inc. (2003). # # Gwillim Law writes that a good source # for recent time zone data is the International Air Transport @@ -17,8 +17,8 @@ # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. # -# Except where otherwise noted, Shanks is the source for entries through 1990, -# and IATA SSIM is the source for entries after 1990. +# Except where otherwise noted, Shanks & Pottenger is the source for +# entries through 1990, and IATA SSIM is the source for entries afterwards. # # Another source occasionally used is Edward W. Whitman, World Time Differences, # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which @@ -65,7 +65,7 @@ # Algeria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Algeria 1916 only - Jun 14 23:00s 1:00 S -Rule Algeria 1916 1919 - Oct Sun<=7 23:00s 0 - +Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 - Rule Algeria 1917 only - Mar 24 23:00s 1:00 S Rule Algeria 1918 only - Mar 9 23:00s 1:00 S Rule Algeria 1919 only - Mar 1 23:00s 1:00 S @@ -75,7 +75,7 @@ Rule Algeria 1921 only - Mar 14 23:00s 1:00 S Rule Algeria 1921 only - Jun 21 23:00s 0 - Rule Algeria 1939 only - Sep 11 23:00s 1:00 S Rule Algeria 1939 only - Nov 19 1:00 0 - -Rule Algeria 1944 1945 - Apr Mon<=7 2:00 1:00 S +Rule Algeria 1944 1945 - Apr Mon>=1 2:00 1:00 S Rule Algeria 1944 only - Oct 8 2:00 0 - Rule Algeria 1945 only - Sep 16 1:00 0 - Rule Algeria 1971 only - Apr 25 23:00s 1:00 S @@ -86,7 +86,8 @@ Rule Algeria 1978 only - Mar 24 1:00 1:00 S Rule Algeria 1978 only - Sep 22 3:00 0 - Rule Algeria 1980 only - Apr 25 0:00 1:00 S Rule Algeria 1980 only - Oct 31 2:00 0 - -# Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21. +# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's +# more precise 0:09:21. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time @@ -106,7 +107,8 @@ Zone Africa/Luanda 0:52:56 - LMT 1892 1:00 - WAT # Benin -# Whitman says they switched to 1:00 in 1946, not 1934; go with Shanks. +# Whitman says they switched to 1:00 in 1946, not 1934; +# go with Shanks & Pottenger. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Porto-Novo 0:10:28 - LMT 1912 0:00 - GMT 1934 Feb 26 @@ -130,7 +132,7 @@ Zone Africa/Bujumbura 1:57:28 - LMT 1890 2:00 - CAT # Cameroon -# Whitman says they switched to 1:00 in 1920; go with Shanks. +# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Douala 0:38:48 - LMT 1912 1:00 - WAT @@ -209,7 +211,14 @@ Rule Egypt 1990 1994 - May 1 1:00 1:00 S # IATA (after 1990) says transitions are at 0:00. # Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29. Rule Egypt 1995 max - Apr lastFri 0:00s 1:00 S -Rule Egypt 1995 max - Sep lastThu 23:00s 0 - +Rule Egypt 1995 2005 - Sep lastThu 23:00s 0 - +# From Steffen Thorsen (2006-09-19): +# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports: +# Egypt will turn back clocks by one hour at the midnight of Thursday +# after observing the daylight saving time since May. +# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf +Rule Egypt 2006 only - Sep 21 23:00s 0 - +Rule Egypt 2007 max - Sep lastThu 23:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Cairo 2:05:00 - LMT 1900 Oct @@ -229,9 +238,9 @@ Zone Africa/Asmera 2:35:32 - LMT 1870 3:00 - EAT # Ethiopia -# From Paul Eggert (1997-10-05): -# Shanks writes that Ethiopia had six narrowly-spaced time zones between -# 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890. +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones +# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890. # We'll guess that 38E50 is for Adis Dera. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Addis_Ababa 2:34:48 - LMT 1870 @@ -252,7 +261,8 @@ Zone Africa/Banjul -1:06:36 - LMT 1912 # Ghana # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -# Whitman says DST was observed from 1931 to ``the present''; go with Shanks. +# Whitman says DST was observed from 1931 to ``the present''; +# go with Shanks & Pottenger. Rule Ghana 1936 1942 - Sep 1 0:00 0:20 GHST Rule Ghana 1936 1942 - Dec 31 0:00 0 GMT # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -288,13 +298,14 @@ Zone Africa/Maseru 1:50:00 - LMT 1903 Mar 2:00 - SAST # Liberia -# From Paul Eggert (2001-07-17): +# From Paul Eggert (2006-03-22): # In 1972 Liberia was the last country to switch # from a UTC offset that was not a multiple of 15 or 20 minutes. # Howse reports that it was in honor of their president's birthday. -# Shanks reports the date as May 1, whereas Howse reports Jan; go with Shanks. -# For Liberia before 1972, Shanks reports -0:44, whereas Howse and Whitman -# each report -0:44:30; go with the more precise figure. +# Shank & Pottenger report the date as May 1, whereas Howse reports Jan; +# go with Shanks & Pottenger. +# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and +# Whitman each report -0:44:30; go with the more precise figure. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Monrovia -0:43:08 - LMT 1882 -0:43:08 - MMT 1919 Mar # Monrovia Mean Time @@ -324,7 +335,7 @@ Zone Africa/Tripoli 0:52:44 - LMT 1920 1:00 Libya CE%sT 1959 2:00 - EET 1982 1:00 Libya CE%sT 1990 May 4 -# The following entries are all from Shanks; +# The following entries are from Shanks & Pottenger; # the IATA SSIM data contain some obvious errors. 2:00 - EET 1996 Sep 30 1:00 - CET 1997 Apr 4 @@ -403,8 +414,8 @@ Zone Africa/Maputo 2:10:20 - LMT 1903 Mar 2:00 - CAT # Namibia -# The 1994-04-03 transition is from Shanks. -# Shanks reports no DST after 1998-04; go with IATA. +# The 1994-04-03 transition is from Shanks & Pottenger. +# Shanks & Pottenger report no DST after 1998-04; go with IATA. # RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Namibia 1994 max - Sep Sun>=1 2:00 1:00 S Rule Namibia 1995 max - Apr Sun>=1 2:00 0 - @@ -488,7 +499,7 @@ Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria # Sierra Leone # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks. +# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger. Rule SL 1935 1942 - Jun 1 0:00 0:40 SLST Rule SL 1935 1942 - Oct 1 0:00 0 WAT Rule SL 1957 1962 - Jun 1 0:00 1:00 SLST @@ -557,7 +568,6 @@ Zone Africa/Lome 0:04:52 - LMT 1893 # Tunisia # From Gwillim Law (2005-04-30): -# # My correspondent, Risto Nykanen, has alerted me to another adoption of DST, # this time in Tunisia. According to Yahoo France News # <http://fr.news.yahoo.com/050426/5/4dumk.html>, in a story attributed to AP @@ -571,6 +581,12 @@ Zone Africa/Lome 0:04:52 - LMT 1893 # <http://www.lapresse.tn/archives/archives280405/actualites/lheure.html> # ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30, # 1h standard time. +# +# From Atef Loukil (2006-03-28): +# The daylight saving time will be the same each year: +# Beginning : the last Sunday of March at 02:00 +# Ending : the last Sunday of October at 03:00 ... +# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50 # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S @@ -596,8 +612,11 @@ Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S Rule Tunisia 1990 only - May 1 0:00s 1:00 S Rule Tunisia 2005 only - May 1 0:00s 1:00 S Rule Tunisia 2005 only - Sep 30 1:00s 0 - -# Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21. -# Shanks says the 1911 switch occurred on Mar 9; go with Howse's Mar 11. +Rule Tunisia 2006 max - Mar lastSun 2:00s 1:00 S +Rule Tunisia 2006 max - Oct lastSun 2:00s 0 - +# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's +# more precise 0:09:21. +# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Tunis 0:40:44 - LMT 1881 May 12 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time diff --git a/timezone/antarctica b/timezone/antarctica index 8a9ea939c9..2584ae4f1d 100644 --- a/timezone/antarctica +++ b/timezone/antarctica @@ -1,4 +1,4 @@ -# @(#)antarctica 8.1 +# @(#)antarctica 8.3 # <pre> # From Paul Eggert (1999-11-15): @@ -33,19 +33,27 @@ Rule RussAQ 1996 max - Oct lastSun 2:00s 0 - # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule ArgAQ 1964 1966 - Mar 1 0:00 0 - Rule ArgAQ 1964 1966 - Oct 15 0:00 1:00 S -Rule ArgAQ 1967 only - Apr 1 0:00 0 - -Rule ArgAQ 1967 1968 - Oct Sun<=7 0:00 1:00 S -Rule ArgAQ 1968 1969 - Apr Sun<=7 0:00 0 - +Rule ArgAQ 1967 only - Apr 2 0:00 0 - +Rule ArgAQ 1967 1968 - Oct Sun>=1 0:00 1:00 S +Rule ArgAQ 1968 1969 - Apr Sun>=1 0:00 0 - Rule ArgAQ 1974 only - Jan 23 0:00 1:00 S Rule ArgAQ 1974 only - May 1 0:00 0 - -Rule ArgAQ 1974 1976 - Oct Sun<=7 0:00 1:00 S -Rule ArgAQ 1975 1977 - Apr Sun<=7 0:00 0 - -Rule ChileAQ 1966 1997 - Oct Sun>=9 0:00 1:00 S -Rule ChileAQ 1967 1998 - Mar Sun>=9 0:00 0 - -Rule ChileAQ 1998 only - Sep 27 0:00 1:00 S -Rule ChileAQ 1999 only - Apr 4 0:00 0 - -Rule ChileAQ 1999 max - Oct Sun>=9 0:00 1:00 S -Rule ChileAQ 2000 max - Mar Sun>=9 0:00 0 - +Rule ChileAQ 1972 1986 - Mar Sun>=9 3:00u 0 - +Rule ChileAQ 1974 1987 - Oct Sun>=9 4:00u 1:00 S +Rule ChileAQ 1987 only - Apr 12 3:00u 0 - +Rule ChileAQ 1988 1989 - Mar Sun>=9 3:00u 0 - +Rule ChileAQ 1988 only - Oct Sun>=1 4:00u 1:00 S +Rule ChileAQ 1989 only - Oct Sun>=9 4:00u 1:00 S +Rule ChileAQ 1990 only - Mar 18 3:00u 0 - +Rule ChileAQ 1990 only - Sep 16 4:00u 1:00 S +Rule ChileAQ 1991 1996 - Mar Sun>=9 3:00u 0 - +Rule ChileAQ 1991 1997 - Oct Sun>=9 4:00u 1:00 S +Rule ChileAQ 1997 only - Mar 30 3:00u 0 - +Rule ChileAQ 1998 only - Mar Sun>=9 3:00u 0 - +Rule ChileAQ 1998 only - Sep 27 4:00u 1:00 S +Rule ChileAQ 1999 only - Apr 4 3:00u 0 - +Rule ChileAQ 1999 max - Oct Sun>=9 4:00u 1:00 S +Rule ChileAQ 2000 max - Mar Sun>=9 3:00u 0 - # Argentina - year-round bases diff --git a/timezone/asia b/timezone/asia index 446cc16e6f..04ddc863e7 100644 --- a/timezone/asia +++ b/timezone/asia @@ -1,15 +1,15 @@ -# @(#)asia 8.1 +# @(#)asia 8.8 # <pre> # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). -# From Paul Eggert (1999-03-22): +# From Paul Eggert (2006-03-22): # # A good source for time zone historical data outside the U.S. is -# Thomas G. Shanks, The International Atlas (5th edition), -# San Diego: ACS Publications, Inc. (1999). +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), +# San Diego: ACS Publications, Inc. (2003). # # Gwillim Law writes that a good source # for recent time zone data is the International Air Transport @@ -17,8 +17,8 @@ # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. # -# Except where otherwise noted, Shanks is the source for entries through 1990, -# and IATA SSIM is the source for entries after 1990. +# Except where otherwise noted, Shanks & Pottenger is the source for +# entries through 1990, and IATA SSIM is the source for entries afterwards. # # Another source occasionally used is Edward W. Whitman, World Time Differences, # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which @@ -61,6 +61,7 @@ # These rules are stolen from the `europe' file. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S +Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 - Rule EUAsia 1996 max - Oct lastSun 1:00u 0 - Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 - @@ -82,10 +83,11 @@ Zone Asia/Kabul 4:36:48 - LMT 1890 4:30 - AFT # Armenia -# From Paul Eggert (1999-10-29): -# Shanks has Yerevan switching to 3:00 (with Russian DST) in spring 1991, -# then to 4:00 with no DST in fall 1995, then readopting Russian DST in 1997. -# Go with Shanks, even when he disagrees with others. Edgar Der-Danieliantz +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger have Yerevan switching to 3:00 (with Russian DST) +# in spring 1991, then to 4:00 with no DST in fall 1995, then +# readopting Russian DST in 1997. Go with Shanks & Pottenger, even +# when they disagree with others. Edgar Der-Danieliantz # reported (1996-05-04) that Yerevan probably wouldn't use DST # in 1996, though it did use DST in 1995. IATA SSIM (1991/1998) reports that # Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991, @@ -194,13 +196,15 @@ Zone Asia/Phnom_Penh 6:59:40 - LMT 1906 Jun 9 # CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN # CHINA 9 H AHEAD OF UTC APR 17 - SEP 10 -# From Paul Eggert (1995-12-19): -# Shanks writes that China has had a single time zone since 1980 May 1, -# observing summer DST from 1986 through 1991; this contradicts Devine's +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger write that China (except for Hong Kong and Macau) +# has had a single time zone since 1980 May 1, observing summer DST +# from 1986 through 1991; this contradicts Devine's # note about Time magazine, though apparently _something_ happened in 1986. -# Go with Shanks for now. I made up names for the other pre-1980 time zones. +# Go with Shanks & Pottenger for now. I made up names for the other +# pre-1980 time zones. -# From Shanks: +# From Shanks & Pottenger: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Shang 1940 only - Jun 3 0:00 1:00 D Rule Shang 1940 1941 - Oct 1 0:00 0 S @@ -208,14 +212,27 @@ Rule Shang 1941 only - Mar 16 0:00 1:00 D Rule PRC 1986 only - May 4 0:00 1:00 D Rule PRC 1986 1991 - Sep Sun>=11 0:00 0 S Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D -# -# Zone NAME GMTOFF RULES FORMAT [UNTIL] -# + # From Anthony Fok (2001-12-20): # BTW, I did some research on-line and found some info regarding these five # historic timezones from some Taiwan websites. And yes, there are official -# Chinese names for these locales (before 1949): +# Chinese names for these locales (before 1949). +# +# From Jesper Norgaard Welen (2006-07-14): +# I have investigated the timezones around 1970 on the +# http://www.astro.com/atlas site [with provinces and county +# boundaries summarized below].... A few other exceptions were two +# counties on the Sichuan side of the Xizang-Sichuan border, +# counties Dege and Baiyu which lies on the Sichuan side and are +# therefore supposed to be GMT+7, Xizang region being GMT+6, but Dege +# county is GMT+8 according to astro.com while Baiyu county is GMT+6 +# (could be true), for the moment I am assuming that those two +# counties are mistakes in the astro.com data. + + +# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Changbai Time ("Long-white Time", Long-white = Heilongjiang area) +# Heilongjiang (except Mohe county), Jilin Zone Asia/Harbin 8:26:44 - LMT 1928 # or Haerbin 8:30 - CHAT 1932 Mar # Changbai Time 8:00 - CST 1940 @@ -223,18 +240,35 @@ Zone Asia/Harbin 8:26:44 - LMT 1928 # or Haerbin 8:30 - CHAT 1980 May 8:00 PRC C%sT # Zhongyuan Time ("Central plain Time") +# most of China Zone Asia/Shanghai 8:05:52 - LMT 1928 8:00 Shang C%sT 1949 8:00 PRC C%sT # Long-shu Time (probably due to Long and Shu being two names of that area) +# Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan; +# most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong +# counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing, +# Yangchun, Yangjiang, Yu'nan, and Yunfu. Zone Asia/Chongqing 7:06:20 - LMT 1928 # or Chungking 7:00 - LONT 1980 May # Long-shu Time 8:00 PRC C%sT # Xin-zang Time ("Xinjiang-Tibet Time") +# The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai; +# the Guangdong counties Xuwen, Haikang, Suixi, Lianjiang, +# Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi; +# east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi; +# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe, +# Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin, +# Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami, +# Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan. Zone Asia/Urumqi 5:50:20 - LMT 1928 # or Urumchi 6:00 - URUT 1980 May # Urumqi Time 8:00 PRC C%sT # Kunlun Time +# West Tibet, including Pulan, Aheqi, Shufu, Shule; +# West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke, +# Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding, +# and Yarkand. Zone Asia/Kashgar 5:03:56 - LMT 1928 # or Kashi or Kaxgar 5:30 - KAST 1940 # Kashgar Time 5:00 - KAST 1980 May @@ -266,7 +300,7 @@ Zone Asia/Hong_Kong 7:36:36 - LMT 1904 Oct 30 # Taiwan -# Shanks writes that Taiwan observed DST during 1945, when it +# Shanks & Pottenger write that Taiwan observed DST during 1945, when it # was still controlled by Japan. This is hard to believe, but we don't # have any other information. @@ -423,7 +457,7 @@ Zone Asia/Calcutta 5:53:28 - LMT 1880 # Kolkata # Indonesia # -# From Gwillim Law (2001-05-28), overriding Shanks: +# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger: # <http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime> # says that Indonesia's time zones changed on 1988-01-01. Looking at some # time zone maps, I think that must refer to Western Borneo (Kalimantan Barat @@ -431,7 +465,7 @@ Zone Asia/Calcutta 5:53:28 - LMT 1880 # Kolkata # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10 -# Shanks says the next transition was at 1924 Jan 1 0:13, +# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13, # but this must be a typo. 7:07:12 - JMT 1923 Dec 31 23:47:12 # Jakarta 7:20 - JAVT 1932 Nov # Java Time @@ -498,8 +532,8 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov # leap year calculation involved. There has never been any serious # plan to change that law.... # -# From Paul Eggert (2005-04-05): -# Go with Shanks before September 1991, and with Pournader thereafter. +# From Paul Eggert (2006-03-22): +# Go with Shanks & Pottenger before Sept. 1991, and with Pournader thereafter. # I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates, # stopping after 2037 when 32-bit time_t's overflow. # That cal-persia used Birashk's approximation, which disagrees with the solar @@ -519,6 +553,14 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov # Reingold's/Dershowitz' calculator gives correctly the Gregorian date # 2058-03-21 for 1 Farvardin 1437 (astronomical). # +# From Paul Eggert (2006-03-22): +# The above comments about post-2006 transitions may become relevant again, +# if Iran ever resuscitates DST, so we'll leave the comments in. +# +# From Steffen Thorsen (2006-03-22): +# Several of my users have reported that Iran will not observe DST anymore: +# http://www.irna.ir/en/news/view/line-17/0603193812164948.htm +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Iran 1978 1980 - Mar 21 0:00 1:00 D Rule Iran 1978 only - Oct 21 0:00 0 S @@ -537,38 +579,8 @@ Rule Iran 2001 2003 - Mar 22 0:00 1:00 D Rule Iran 2001 2003 - Sep 22 0:00 0 S Rule Iran 2004 only - Mar 21 0:00 1:00 D Rule Iran 2004 only - Sep 21 0:00 0 S -Rule Iran 2005 2007 - Mar 22 0:00 1:00 D -Rule Iran 2005 2007 - Sep 22 0:00 0 S -Rule Iran 2008 only - Mar 21 0:00 1:00 D -Rule Iran 2008 only - Sep 21 0:00 0 S -Rule Iran 2009 2011 - Mar 22 0:00 1:00 D -Rule Iran 2009 2011 - Sep 22 0:00 0 S -Rule Iran 2012 only - Mar 21 0:00 1:00 D -Rule Iran 2012 only - Sep 21 0:00 0 S -Rule Iran 2013 2015 - Mar 22 0:00 1:00 D -Rule Iran 2013 2015 - Sep 22 0:00 0 S -Rule Iran 2016 only - Mar 21 0:00 1:00 D -Rule Iran 2016 only - Sep 21 0:00 0 S -Rule Iran 2017 2019 - Mar 22 0:00 1:00 D -Rule Iran 2017 2019 - Sep 22 0:00 0 S -Rule Iran 2020 only - Mar 21 0:00 1:00 D -Rule Iran 2020 only - Sep 21 0:00 0 S -Rule Iran 2021 2023 - Mar 22 0:00 1:00 D -Rule Iran 2021 2023 - Sep 22 0:00 0 S -Rule Iran 2024 only - Mar 21 0:00 1:00 D -Rule Iran 2024 only - Sep 21 0:00 0 S -Rule Iran 2025 2027 - Mar 22 0:00 1:00 D -Rule Iran 2025 2027 - Sep 22 0:00 0 S -Rule Iran 2028 2029 - Mar 21 0:00 1:00 D -Rule Iran 2028 2029 - Sep 21 0:00 0 S -Rule Iran 2030 2031 - Mar 22 0:00 1:00 D -Rule Iran 2030 2031 - Sep 22 0:00 0 S -Rule Iran 2032 2033 - Mar 21 0:00 1:00 D -Rule Iran 2032 2033 - Sep 21 0:00 0 S -Rule Iran 2034 2035 - Mar 22 0:00 1:00 D -Rule Iran 2034 2035 - Sep 22 0:00 0 S -Rule Iran 2036 2037 - Mar 21 0:00 1:00 D -Rule Iran 2036 2037 - Sep 21 0:00 0 S +Rule Iran 2005 only - Mar 22 0:00 1:00 D +Rule Iran 2005 only - Sep 22 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tehran 3:25:44 - LMT 1916 3:25:44 - TMT 1946 # Tehran Mean Time @@ -601,7 +613,8 @@ Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D # IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo. -# Shanks says Iraq did not observe DST 1992/1997 or 1999 on; ignore this. +# Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this. +# Rule Iraq 1991 max - Apr 1 3:00s 1:00 D Rule Iraq 1991 max - Oct 1 3:00s 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -635,7 +648,7 @@ Zone Asia/Baghdad 2:57:40 - LMT 1890 # high on my favorite-country list (and not only because my wife's # family is from India). -# From Shanks: +# From Shanks & Pottenger: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Zion 1940 only - Jun 1 0:00 1:00 D Rule Zion 1942 1944 - Nov 1 0:00 0 S @@ -874,14 +887,15 @@ Zone Asia/Jerusalem 2:20:56 - LMT 1880 # of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who # wanted to keep it.) -# Shanks writes that daylight saving in Japan during those years was as follows: +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger write that DST in Japan during those years was as follows: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Japan 1948 only - May Sun>=1 2:00 1:00 D Rule Japan 1948 1951 - Sep Sat>=8 2:00 0 S Rule Japan 1949 only - Apr Sun>=1 2:00 1:00 D Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D # but the only locations using it (for birth certificates, presumably, since -# Shanks's audience is astrologers) were US military bases. For now, assume +# their audience is astrologers) were US military bases. For now, assume # that for most purposes daylight-saving time was observed; otherwise, what # would have been the point of the 1951 poll? @@ -906,8 +920,9 @@ Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D # I wrote "ordinance" above, but I don't know how to translate. # In Japanese it's "chokurei", which means ordinance from emperor. -# Shanks claims JST in use since 1896, and that a few places (e.g. Ishigaki) -# use +0800; go with Suzuki. Guess that all ordinances took effect on Jan 1. +# Shanks & Pottenger claim JST in use since 1896, and that a few +# places (e.g. Ishigaki) use +0800; go with Suzuki. Guess that all +# ordinances took effect on Jan 1. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u @@ -938,6 +953,10 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u # For Jordan I have received multiple independent user reports every year # about DST end dates, as the end-rule is different every year. # +# From Steffen Thorsen (2006-10-01), after a heads-up from Hilal Malawi: +# http://www.petranews.gov.jo/nepras/2006/Sep/05/4000.htm +# "Jordan will switch to winter time on Friday, October 27". +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Jordan 1973 only - Jun 6 0:00 1:00 S Rule Jordan 1973 1975 - Oct 1 0:00 0 - @@ -964,7 +983,8 @@ Rule Jordan 1999 2002 - Sep lastThu 0:00s 0 - Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S Rule Jordan 2003 only - Oct 24 0:00s 0 - Rule Jordan 2004 only - Oct 15 0:00s 0 - -Rule Jordan 2005 max - Sep lastFri 0:00s 0 - +Rule Jordan 2005 only - Sep lastFri 0:00s 0 - +Rule Jordan 2006 max - Oct lastFri 0:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Amman 2:23:44 - LMT 1931 2:00 Jordan EE%sT @@ -979,11 +999,11 @@ Zone Asia/Amman 2:23:44 - LMT 1931 # Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time # IATA SSIM mentions a third time zone in Kazakhstan. -# From Paul Eggert (2001-10-18): +# From Paul Eggert (2006-03-22): # German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses # RussiaAsia rules, instead of switching at 00:00 as the IATA has it. -# Go with Shanks, who has them always using RussiaAsia rules. -# Also go with the following claims of Shanks: +# Go with Shanks & Pottenger, who have them always using RussiaAsia rules. +# Also go with the following claims of Shanks & Pottenger: # # - Kazakhstan did not observe DST in 1991. # - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00. @@ -1063,7 +1083,7 @@ Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk 5:00 - ORAT # Kyrgyzstan (Kirgizstan) -# Transitions through 1991 are from Shanks. +# Transitions through 1991 are from Shanks & Pottenger. # From Paul Eggert (2005-08-15): # According to an article dated today in the Kyrgyzstan Development Gateway @@ -1091,17 +1111,19 @@ Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 # Korea (North and South) -# From Guy Harris: -# According to someone at the Korean Times in San Francisco, -# Daylight Savings Time was not observed until 1987. He did not know -# at what time of day DST starts or ends. +# From Annie I. Bang (2006-07-10) in +# <http://www.koreaherald.co.kr/SITE/data/html_dir/2006/07/10/200607100012.asp>: +# The Ministry of Commerce, Industry and Energy has already +# commissioned a research project [to reintroduce DST] and has said +# the system may begin as early as 2008.... Korea ran a daylight +# saving program from 1949-61 but stopped it during the 1950-53 Korean War. -# From Shanks: +# From Shanks & Pottenger: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule ROK 1960 only - May 15 0:00 1:00 D Rule ROK 1960 only - Sep 13 0:00 0 S -Rule ROK 1987 1988 - May Sun<=14 0:00 1:00 D -Rule ROK 1987 1988 - Oct Sun<=14 0:00 0 S +Rule ROK 1987 1988 - May Sun>=8 0:00 1:00 D +Rule ROK 1987 1988 - Oct Sun>=8 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Seoul 8:27:52 - LMT 1890 @@ -1184,8 +1206,8 @@ Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1 7:30 - MALT 1982 Jan 1 8:00 - MYT # Malaysia Time # Sabah & Sarawak -# From Paul Eggert (2003-11-01): -# The data here are mostly from Shanks, but the 1942, 1945 and 1982 +# From Paul Eggert (2006-03-22): +# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982 # transition dates are from Mok Ly Yng. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Kuching 7:21:20 - LMT 1926 Mar @@ -1203,8 +1225,8 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Male # Mongolia -# Shanks says that Mongolia has three time zones, but usno1995 and the CIA map -# Standard Time Zones of the World (1997-01) +# Shanks & Pottenger say that Mongolia has three time zones, but +# usno1995 and the CIA map Standard Time Zones of the World (2005-03) # both say that it has just one. # From Oscar van Vlijmen (1999-12-11): @@ -1274,11 +1296,19 @@ Zone Indian/Maldives 4:54:00 - LMT 1880 # Male # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S Rule Mongol 1983 only - Oct 1 0:00 0 - -# IATA SSIM says 1990s switches occurred at 00:00, but Shanks (1995) lists -# them at 02:00s, and McDow says the 2001 switches also occurred at 02:00. -# Also, IATA SSIM (1996-09) says 1996-10-25. Go with Shanks through 1998. -Rule Mongol 1985 1998 - Mar lastSun 2:00s 1:00 S -Rule Mongol 1984 1998 - Sep lastSun 2:00s 0 - +# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00, +# but McDow says the 2001 switches occurred at 02:00. Also, IATA SSIM +# (1996-09) says 1996-10-25. Go with Shanks & Pottenger through 1998. +# +# Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches +# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place +# at 02:00 standard time, not at 00:00 local time as in the rest of +# the country. That would be odd, and possibly is a result of their +# correction of 02:00 (in the previous edition) not being done correctly +# in the latest edition; so ignore it for now. + +Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S +Rule Mongol 1984 1998 - Sep lastSun 0:00 0 - # IATA SSIM (1999-09) says Mongolia no longer observes DST. Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S Rule Mongol 2001 max - Sep lastSat 2:00 0 - @@ -1404,8 +1434,8 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # I guess more info may be available from the PA's web page (if/when they # have one). -# From Paul Eggert (1998-02-25): -# Shanks writes that Gaza did not observe DST until 1957, but we'll go +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger write that Gaza did not observe DST until 1957, but go # with Shapir and assume that it observed DST from 1940 through 1947, # and that it used Jordanian rules starting in 1996. # We don't yet need a separate entry for the West Bank, since @@ -1443,6 +1473,23 @@ Zone Asia/Karachi 4:28:12 - LMT 1907 # there is a good chance next year's end date will be around two weeks # earlier--the same goes for Jordan. +# From Steffen Thorsen (2006-08-17): +# I was informed by a user in Bethlehem that in Bethlehem it started the +# same day as Israel, and after checking with other users in the area, I +# was informed that they started DST one day after Israel. I was not +# able to find any authoritative sources at the time, nor details if +# Gaza changed as well, but presumed Gaza to follow the same rules as +# the West Bank. + +# From Steffen Thorsen (2006-09-26): +# according to the Palestine News Network (2006-09-19): +# http://english.pnn.ps/index.php?option=com_content&task=view&id=596&Itemid=5 +# > The Council of Ministers announced that this year its winter schedule +# > will begin early, as of midnight Thursday. It is also time to turn +# > back the clocks for winter. Friday will begin an hour late this week. +# I guess it is likely that next year's date will be moved as well, +# because of the Ramadan. + # The rules for Egypt are stolen from the `africa' file. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule EgyptAsia 1957 only - May 10 0:00 1:00 S @@ -1452,10 +1499,13 @@ Rule EgyptAsia 1959 1967 - May 1 1:00 1:00 S Rule EgyptAsia 1959 1965 - Sep 30 3:00 0 - Rule EgyptAsia 1966 only - Oct 1 3:00 0 - -Rule Palestine 1999 max - Apr Fri>=15 0:00 1:00 S +Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 - Rule Palestine 2004 only - Oct 1 1:00 0 - -Rule Palestine 2005 max - Oct 4 2:00 0 - +Rule Palestine 2005 only - Oct 4 2:00 0 - +Rule Palestine 2006 max - Apr 1 0:00 1:00 S +Rule Palestine 2006 only - Sep 22 0:00 0 - +Rule Palestine 2007 max - Oct Fri>=15 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Gaza 2:17:52 - LMT 1900 Oct @@ -1473,7 +1523,21 @@ Zone Asia/Gaza 2:17:52 - LMT 1900 Oct # Philippines, issued a proclamation announcing that 1844-12-30 was to # be immediately followed by 1845-01-01. Robert H. van Gent has a # transcript of the decree in <http://www.phys.uu.nl/~vgent/idl/idl.htm>. -# The rest of this data is from Shanks. +# The rest of the data are from Shanks & Pottenger. + +# From Paul Eggert (2006-04-25): +# Tomorrow's Manila Standard reports that the Philippines Department of +# Trade and Industry is considering adopting DST this June when the +# rainy season begins. See +# <http://www.manilastandardtoday.com/?page=politics02_april26_2006>. +# For now, we'll ignore this, since it's not definite and we lack details. +# +# From Jesper Norgaard Welen (2006-04-26): +# ... claims that Philippines had DST last time in 1990: +# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/ +# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires, +# but no details] + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Phil 1936 only - Nov 1 0:00 1:00 S Rule Phil 1937 only - Feb 1 0:00 0 - @@ -1533,6 +1597,49 @@ Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1 # With effect from 12.30 a.m. on 26th October 1996 # Sri Lanka will be six (06) hours ahead of GMT. +# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online +# <http://news.sinhalaya.com/wmview.php?ArtID=11002> (2006-04-13): +# 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes) +# at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006). + +# From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in: +# <http://today.reuters.co.uk/news/newsArticle.aspx?type=scienceNews&storyID=2006-04-12T172228Z_01_COL295762_RTRIDST_0_SCIENCE-SRILANKA-TIME-DC.XML> +# [The Tamil Tigers] never accepted the original 1996 time change and simply +# kept their clocks set five and a half hours ahead of Greenwich Mean +# Time (GMT), in line with neighbor India. +# From Paul Eggert (2006-04-18): +# People who live in regions under Tamil control can use TZ='Asia/Calcutta', +# as that zone has agreed with the Tamil areas since our cutoff date of 1970. + +# From K Sethu (2006-04-25): +# I think the abbreviation LKT originated from the world of computers at +# the time of or subsequent to the time zone changes by SL Government +# twice in 1996 and probably SL Government or its standardization +# agencies never declared an abbreviation as a national standard. +# +# I recollect before the recent change the government annoucemments +# mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka +# Time and no mention was made about the abbreviation. +# +# If we look at Sri Lanka Department of Government's "Official News +# Website of Sri Lanka" ... http://www.news.lk/ we can see that they +# use SLT as abbreviation in time stamp at the beginning of each news +# item.... +# +# Within Sri Lanka I think LKT is well known among computer users and +# adminsitrators. In my opinion SLT may not be a good choice because the +# nation's largest telcom / internet operator Sri Lanka Telcom is well +# known by that abbreviation - simply as SLT (there IP domains are +# slt.lk and sltnet.lk). +# +# But if indeed our government has adopted SLT as standard abbreviation +# (that we have not known so far) then it is better that it be used for +# all computers. + +# From Paul Eggert (2006-04-25): +# One possibility is that we wait for a bit for the dust to settle down +# and then see what people actually say in practice. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Colombo 5:19:24 - LMT 1880 5:19:32 - MMT 1906 # Moratuwa Mean Time @@ -1541,7 +1648,8 @@ Zone Asia/Colombo 5:19:24 - LMT 1880 5:30 1:00 IST 1945 Oct 16 2:00 5:30 - IST 1996 May 25 0:00 6:30 - LKT 1996 Oct 26 0:30 - 6:00 - LKT + 6:00 - LKT 2006 Apr 15 0:30 + 5:30 - IST # Syria # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -1576,17 +1684,24 @@ Rule Syria 1993 only - Sep 25 0:00 0 - # IATA SSIM (1998-02) says 1998-04-02; # (1998-09) says 1999-03-29 and 1999-09-29; (1999-02) says 1999-04-02, # 2000-04-02, and 2001-04-02; (1999-09) says 2000-03-31 and 2001-03-31; -# ignore all these claims and go with Shanks. +# (2006) says 2006-03-31 and 2006-09-22; +# for now ignore all these claims and go with Shanks & Pottenger, +# except for the 2006-09-22 claim (which seems right for Ramadan). Rule Syria 1994 1996 - Apr 1 0:00 1:00 S -Rule Syria 1994 max - Oct 1 0:00 0 - +Rule Syria 1994 2005 - Oct 1 0:00 0 - Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S Rule Syria 1999 max - Apr 1 0:00 1:00 S +# From Stephen Colebourne (2006-09-18): +# According to IATA data, Syria will change DST on 21st September [21:00 UTC] +# this year [only].... This is probably related to Ramadan, like Egypt. +Rule Syria 2006 only - Sep 22 0:00 0 - +Rule Syria 2007 max - Oct 1 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Damascus 2:25:12 - LMT 1920 # Dimashq 2:00 Syria EE%sT # Tajikistan -# From Shanks. +# From Shanks & Pottenger. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2 5:00 - DUST 1930 Jun 21 # Dushanbe Time @@ -1601,13 +1716,13 @@ Zone Asia/Bangkok 6:42:04 - LMT 1880 7:00 - ICT # Turkmenistan -# From Shanks. +# From Shanks & Pottenger. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad 4:00 - ASHT 1930 Jun 21 # Ashkhabad Time 5:00 RussiaAsia ASH%sT 1991 Mar 31 2:00 4:00 RussiaAsia ASH%sT 1991 Oct 27 # independence - 4:00 RussiaAsia TM%sT 1992 Jan 19 2:00 + 4:00 RussiaAsia TM%sT 1992 Jan 19 2:00 5:00 - TMT # United Arab Emirates @@ -1621,24 +1736,24 @@ Zone Asia/Samarkand 4:27:12 - LMT 1924 May 2 4:00 - SAMT 1930 Jun 21 # Samarkand Time 5:00 - SAMT 1981 Apr 1 5:00 1:00 SAMST 1981 Oct 1 - 6:00 RussiaAsia TAS%sT 1991 Mar 31 2:00 # Tashkent Time - 5:00 RussiaAsia TAS%sT 1991 Sep 1 # independence + 6:00 - TAST 1982 Apr 1 # Tashkent Time + 5:00 RussiaAsia SAM%sT 1991 Sep 1 # independence 5:00 RussiaAsia UZ%sT 1992 - 5:00 RussiaAsia UZ%sT 1993 5:00 - UZT Zone Asia/Tashkent 4:37:12 - LMT 1924 May 2 5:00 - TAST 1930 Jun 21 # Tashkent Time - 6:00 RussiaAsia TAS%sT 1991 Mar 31 2:00s + 6:00 RussiaAsia TAS%sT 1991 Mar 31 2:00 5:00 RussiaAsia TAS%sT 1991 Sep 1 # independence 5:00 RussiaAsia UZ%sT 1992 - 5:00 RussiaAsia UZ%sT 1993 5:00 - UZT # Vietnam + # From Paul Eggert (1993-11-18): # Saigon's official name is Thanh-Pho Ho Chi Minh, but it's too long. # We'll stick with the traditional name for now. -# From Shanks: + +# From Shanks & Pottenger: # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Saigon 7:06:40 - LMT 1906 Jun 9 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT? diff --git a/timezone/australasia b/timezone/australasia index 70b845560e..2e17bcc0c3 100644 --- a/timezone/australasia +++ b/timezone/australasia @@ -1,4 +1,4 @@ -# @(#)australasia 8.1 +# @(#)australasia 8.3 # <pre> # This file also includes Pacific islands. @@ -210,7 +210,7 @@ Zone Indian/Christmas 7:02:52 - LMT 1895 Feb 7:00 - CXT # Christmas Island Time # Cook Is -# From Shanks: +# From Shanks & Pottenger: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Cook 1978 only - Nov 12 0:00 0:30 HS Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 - @@ -308,7 +308,7 @@ Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 S Rule NC 1978 1979 - Feb 27 0:00 0 - Rule NC 1996 only - Dec 1 2:00s 1:00 S -# Shanks says the following was at 2:00; go with IATA. +# Shanks & Pottenger say the following was at 2:00; go with IATA. Rule NC 1997 only - Mar 2 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 @@ -507,10 +507,10 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). -# From Paul Eggert (1999-10-29): +# From Paul Eggert (2006-03-22): # A good source for time zone historical data outside the U.S. is -# Thomas G. Shanks, The International Atlas (5th edition), -# San Diego: ACS Publications, Inc. (1999). +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), +# San Diego: ACS Publications, Inc. (2003). # # Gwillim Law writes that a good source # for recent time zone data is the International Air Transport @@ -518,8 +518,8 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. # -# Except where otherwise noted, Shanks is the source for entries through 1990, -# and IATA SSIM is the source for entries after 1990. +# Except where otherwise noted, Shanks & Pottenger is the source for +# entries through 1990, and IATA SSIM is the source for entries afterwards. # # Another source occasionally used is Edward W. Whitman, World Time Differences, # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which @@ -587,6 +587,12 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # WST for any place operating at a GMTOFF of 8:00 # EST for any place operating at a GMTOFF of 10:00 +# From Chuck Soper (2006-06-01): +# I recently found this Australian government web page on time zones: +# <http://www.australia.gov.au/about-australia-13time> +# And this government web page lists time zone names and abbreviations: +# <http://www.bom.gov.au/climate/averages/tables/daysavtm.shtml> + # From Paul Eggert (2001-04-05), summarizing a long discussion about "EST" # versus "AEST" etc.: # @@ -669,7 +675,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # understood in Australia. # From Paul Eggert (1995-12-19): -# Shanks reports 2:00 for all autumn changes in Australia and New Zealand. +# Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ. # Mark Prior writes that his newspaper # reports that NSW's fall 1995 change will occur at 2:00, # but Robert Elz says it's been 3:00 in Victoria since 1970 @@ -842,14 +848,14 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # current DST ending dates, no worries. # # Rule Oz 1971 1985 - Oct lastSun 2:00 1:00 - -# Rule Oz 1986 max - Oct Sun<=24 2:00 1:00 - +# Rule Oz 1986 max - Oct Sun>=18 2:00 1:00 - # Rule Oz 1972 only - Feb 27 3:00 0 - # Rule Oz 1973 1986 - Mar Sun>=1 3:00 0 - -# Rule Oz 1987 max - Mar Sun<=21 3:00 0 - +# Rule Oz 1987 max - Mar Sun>=15 3:00 0 - # Zone Australia/Tasmania 10:00 Oz EST # Zone Australia/South 9:30 Oz CST # Zone Australia/Victoria 10:00 Oz EST 1985 Oct lastSun 2:00 -# 10:00 1:00 EST 1986 Mar Sun<=21 3:00 +# 10:00 1:00 EST 1986 Mar Sun>=15 3:00 # 10:00 Oz EST # From Robert Elz (1991-03-06): @@ -875,7 +881,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # ... # Rule AS 1971 max - Oct lastSun 2:00 1:00 D # Rule AS 1972 1985 - Mar Sun>=1 3:00 0 C -# Rule AS 1986 1990 - Mar Sun<=21 3:00 0 C +# Rule AS 1986 1990 - Mar Sun>=15 3:00 0 C # Rule AS 1991 max - Mar Sun>=1 3:00 0 C # From Bradley White (1992-03-11): @@ -1068,9 +1074,9 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # shown on clocks on LHI. I guess this means that for 30 minutes at the start # of DST, LHI is actually 1 hour ahead of the rest of NSW. -# From Paul Eggert (2001-02-09): -# For Lord Howe dates we use Shanks through 1989, and Lonergan thereafter. -# For times we use Lonergan. +# From Paul Eggert (2006-03-22): +# For Lord Howe dates we use Shanks & Pottenger through 1989, and +# Lonergan thereafter. For times we use Lonergan. ############################################################################### @@ -1101,16 +1107,16 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # rather than the October 1 value. # From Paul Eggert (1995-12-19); -# Shanks reports 2:00 for all autumn changes in Australia and New Zealand. +# Shank & Pottenger report 2:00 for all autumn changes in Australia and NZ. # Robert Uzgalis writes that the New Zealand Daylight # Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard # time on both the first Sunday in October and the third Sunday in March. # As with Australia, we'll assume the tradition is 2:00s, not 2:00. # -# From Paul Eggert (2003-05-26): +# From Paul Eggert (2006-03-22): # The Department of Internal Affairs (DIA) maintains a brief history, # as does Carol Squires; see tz-link.htm for the full references. -# Use these sources in preference to Shanks. +# Use these sources in preference to Shanks & Pottenger. # # For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with # transitions at 2:45 local standard time; this confirms that Chatham @@ -1185,8 +1191,8 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # ``I am certain, having lived there for the past decade, that "Truk" # (now properly known as Chuuk) ... is in the time zone GMT+10.'' # -# Shanks writes that Truk switched from UTC+10 to UTC+11 on 1978-10-01; -# ignore this for now. +# Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11 +# on 1978-10-01; ignore this for now. # From Paul Eggert (1999-10-29): # The Federated States of Micronesia Visitors Board writes in @@ -1279,8 +1285,8 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # on the World Day of Prayer, you would be the first people on Earth # to say your prayers in the morning." -# From Paul Eggert (1999-08-12): -# Shanks says the transition was on 1968-10-01; go with Mundell. +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell. # From Eric Ulevik (1999-05-03): # Tonga's director of tourism, who is also secretary of the National Millenium diff --git a/timezone/backward b/timezone/backward index 66fbf30618..00824407fa 100644 --- a/timezone/backward +++ b/timezone/backward @@ -1,4 +1,4 @@ -# @(#)backward 8.1 +# @(#)backward 8.2 # This file provides links between current names for time zones # and their old names. Many names changed in late 1993. @@ -8,6 +8,7 @@ Link America/Argentina/Catamarca America/Argentina/ComodRivadavia Link America/Adak America/Atka Link America/Argentina/Buenos_Aires America/Buenos_Aires Link America/Argentina/Catamarca America/Catamarca +Link America/Atikokan America/Coral_Harbour Link America/Argentina/Cordoba America/Cordoba Link America/Tijuana America/Ensenada Link America/Indiana/Indianapolis America/Fort_Wayne diff --git a/timezone/checktab.awk b/timezone/checktab.awk index 6d532141e6..80ad7d5701 100644 --- a/timezone/checktab.awk +++ b/timezone/checktab.awk @@ -1,6 +1,6 @@ # Check tz tables for consistency. -# @(#)checktab.awk 1.7 +# @(#)checktab.awk 8.1 # Contributed by Paul Eggert. diff --git a/timezone/europe b/timezone/europe index 54146d7400..b3a3b269d3 100644 --- a/timezone/europe +++ b/timezone/europe @@ -1,14 +1,14 @@ -# @(#)europe 8.1 +# @(#)europe 8.6 # <pre> # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). -# From Paul Eggert (1999-10-29): +# From Paul Eggert (2006-03-22): # A good source for time zone historical data outside the U.S. is -# Thomas G. Shanks, The International Atlas (5th edition), -# San Diego: ACS Publications, Inc. (1999). +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), +# San Diego: ACS Publications, Inc. (2003). # # Gwillim Law writes that a good source # for recent time zone data is the International Air Transport @@ -16,8 +16,8 @@ # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. # -# Except where otherwise noted, Shanks is the source for entries through 1991, -# and IATA SSIM is the source for entries afterwards. +# Except where otherwise noted, Shanks & Pottenger is the source for +# entries through 1991, and IATA SSIM is the source for entries afterwards. # # Other sources occasionally used include: # @@ -221,11 +221,12 @@ # (Lords Hansard 11 June 1997 columns 964 to 976) # </a>. -# From Paul Eggert (2001-07-18): +# From Paul Eggert (2006-03-22): # -# For lack of other data, we'll follow Shanks for Eire in 1940-1948. +# For lack of other data, follow Shanks & Pottenger for Eire in 1940-1948. # -# Given Ilieve and Myers's data, the following claims by Shanks are incorrect: +# Given Ilieve and Myers's data, the following claims by Shanks & Pottenger +# are incorrect: # * Wales did not switch from GMT to daylight saving time until # 1921 Apr 3, when they began to conform with the rest of Great Britain. # Actually, Wales was identical after 1880. @@ -237,18 +238,19 @@ # Actually, that date saw the usual switch to summer time. # Standard time was not changed until 1968-10-27 (the clocks didn't change). # -# Here is another incorrect claim by Shanks: +# Here is another incorrect claim by Shanks & Pottenger: # * Jersey, Guernsey, and the Isle of Man did not switch from GMT # to daylight saving time until 1921 Apr 3, when they began to # conform with Great Britain. # S.R.&O. 1916, No. 382 and HO 45/10811/312364 (quoted above) say otherwise. # -# The following claim by Shanks is possible though doubtful; +# The following claim by Shanks & Pottenger is possible though doubtful; # we'll ignore it for now. # * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00. # # -# Whitman says Dublin Mean Time was -0:25:21, which is more precise than Shanks. +# Whitman says Dublin Mean Time was -0:25:21, which is more precise than +# Shanks & Pottenger. # Perhaps this was Dunsink Observatory Time, as Dunsink Observatory # (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was # to London. For example: @@ -418,11 +420,14 @@ Rule GB-Eire 1990 1995 - Oct Sun>=22 1:00u 0 GMT # See EU for rules starting in 1996. # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Europe/London -0:01:15 - LMT 1847 Dec 1 +Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s 0:00 GB-Eire %s 1968 Oct 27 1:00 - BST 1971 Oct 31 2:00u 0:00 GB-Eire %s 1996 0:00 EU GMT/BST +Link Europe/London Europe/Jersey +Link Europe/London Europe/Guernsey +Link Europe/London Europe/Isle_of_Man Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00 -0:25:21 1:00 IST 1916 Oct 1 2:00s @@ -476,7 +481,7 @@ Rule C-Eur 1942 only - Nov 2 2:00s 0 - Rule C-Eur 1943 only - Mar 29 2:00s 1:00 S Rule C-Eur 1943 only - Oct 4 2:00s 0 - Rule C-Eur 1944 only - Apr 3 2:00s 1:00 S -# Whitman gives 1944 Oct 7; go with Shanks. +# Whitman gives 1944 Oct 7; go with Shanks & Pottenger. Rule C-Eur 1944 only - Oct 2 2:00s 0 - Rule C-Eur 1977 1980 - Apr Sun>=1 2:00s 1:00 S Rule C-Eur 1977 only - Sep lastSun 2:00s 0 - @@ -596,12 +601,12 @@ Zone Europe/Andorra 0:06:04 - LMT 1901 # Austria -# From Paul Eggert (2003-02-28): Shanks gives 1918-06-16 and +# From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and # 1945-11-18, but the Austrian Federal Office of Metrology and # Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged" # date of 1945-04-12 with no time. For the 1980-04-06 transition -# Shanks gives 02:00, the BEV 00:00. Go with the BEV, and guess 02:00 -# for 1945-04-12. +# Shanks & Pottenger give 02:00, the BEV 00:00. Go with the BEV, +# and guess 02:00 for 1945-04-12. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Austria 1920 only - Apr 5 2:00s 1:00 S @@ -701,7 +706,7 @@ Zone Europe/Brussels 0:17:30 - LMT 1880 1:00 EU CE%sT # Bosnia and Herzegovina -# see Serbia and Montenegro +# see Serbia # Bulgaria # @@ -713,7 +718,7 @@ Zone Europe/Brussels 0:17:30 - LMT 1880 # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Bulg 1979 only - Mar 31 23:00 1:00 S Rule Bulg 1979 only - Oct 1 1:00 0 - -Rule Bulg 1980 1982 - Apr Sat<=7 23:00 1:00 S +Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S Rule Bulg 1980 only - Sep 29 1:00 0 - Rule Bulg 1981 only - Sep 27 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -728,7 +733,7 @@ Zone Europe/Sofia 1:33:16 - LMT 1880 2:00 EU EE%sT # Croatia -# see Serbia and Montenegro +# see Serbia # Cyprus # Please see the `asia' file for Asia/Nicosia. @@ -813,10 +818,10 @@ Zone Atlantic/Faeroe -0:27:04 - LMT 1908 Jan 11 # Torshavn # East Greenland and Franz Josef Land, but we don't know their time zones. # My source for this is Wilhelm Dege's book mentioned under Svalbard. # -# From Paul Eggert (1996-11-22): +# From Paul Eggert (2006-03-22): # Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01, # and left the EU on 1985-02-01. It therefore should have been using EU -# rules at least through 1984. Shanks says Scoresbysund and Godthab +# rules at least through 1984. Shanks & Pottenger say Scoresbysund and Godthab # used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU # rules since at least 1991. Assume EU rules since 1980. @@ -871,24 +876,28 @@ Zone Atlantic/Faeroe -0:27:04 - LMT 1908 Jan 11 # Torshavn # I heard back from someone stationed at Thule; the time change took place # there at 2:00 AM. -# From Paul Eggert (2001-11-19): -# The 1997 CIA map shows Danmarkshavn on GMT; the 1995 map as like Godthab. +# From Paul Eggert (2006-03-22): +# From 1997 on the CIA map shows Danmarkshavn on GMT; +# the 1995 map as like Godthab. # For lack of better info, assume they were like Godthab before 1996. # startkart.no says Thule does not observe DST, but this is clearly an error, -# so go with Shanks for all Thule transitions. +# so go with Shanks & Pottenger for Thule transitions until this year. +# For 2007 on assume Thule will stay in sync with US DST rules. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D Rule Thule 1991 1992 - Sep lastSun 2:00 0 S -Rule Thule 1993 max - Apr Sun>=1 2:00 1:00 D -Rule Thule 1993 max - Oct lastSun 2:00 0 S +Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D +Rule Thule 1993 2006 - Oct lastSun 2:00 0 S +Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D +Rule Thule 2007 max - Nov Sun>=1 2:00 0 S # # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 -3:00 - WGT 1980 Apr 6 2:00 -3:00 EU WG%sT 1996 0:00 - GMT -Zone America/Scoresbysund -1:29:00 - LMT 1916 Jul 28 # Ittoqqortoormiit +Zone America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 # Ittoqqortoormiit -2:00 - CGT 1980 Apr 6 2:00 -2:00 C-Eur CG%sT 1981 Mar 29 -1:00 EU EG%sT @@ -963,13 +972,13 @@ Zone Europe/Tallinn 1:39:00 - LMT 1880 # Finland # -# From Hannu Strang (25 Sep 1994 06:03:37 UTC): +# From Hannu Strang (1994-09-25 06:03:37 UTC): # Well, here in Helsinki we're just changing from summer time to regular one, # and it's supposed to change at 4am... # -# From Paul Eggert (25 Sep 1994): -# Shanks says Finland has switched at 02:00 standard time since 1981. -# Go with Strang instead. +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger say Finland has switched at 02:00 standard time +# since 1981. Go with Strang instead. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Finland 1942 only - Apr 3 0:00 1:00 S @@ -999,7 +1008,7 @@ Link Europe/Helsinki Europe/Mariehamn # -# Shanks seems to use `24:00' ambiguously; we resolve it with Whitman. +# Shank & Pottenger seem to use `24:00' ambiguously; resolve it with Whitman. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule France 1916 only - Jun 14 23:00s 1:00 S Rule France 1916 1919 - Oct Sun>=1 23:00s 0 - @@ -1013,7 +1022,7 @@ Rule France 1921 only - Oct 25 23:00s 0 - Rule France 1922 only - Mar 25 23:00s 1:00 S # DSH writes that a law of 1923-05-24 specified 3rd Sat in Apr at 23:00 to 1st # Sat in Oct at 24:00; and that in 1930, because of Easter, the transitions -# were Apr 12 and Oct 5. Go with Shanks. +# were Apr 12 and Oct 5. Go with Shanks & Pottenger. Rule France 1922 1938 - Oct Sat>=1 23:00s 0 - Rule France 1923 only - May 26 23:00s 1:00 S Rule France 1924 only - Mar 29 23:00s 1:00 S @@ -1034,8 +1043,8 @@ Rule France 1938 only - Mar 26 23:00s 1:00 S Rule France 1939 only - Apr 15 23:00s 1:00 S Rule France 1939 only - Nov 18 23:00s 0 - Rule France 1940 only - Feb 25 2:00 1:00 S -# The French rules for 1941-1944 were not used in Paris, but Shanks writes -# that they were used in Monaco and in many French locations. +# The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger +# write that they were used in Monaco and in many French locations. # Le Corre writes that the upper limit of the free zone was Arneguy, Orthez, # Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La # Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Decartes, @@ -1043,7 +1052,7 @@ Rule France 1940 only - Feb 25 2:00 1:00 S # Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois, # Dole, Morez, St-Claude, and Collognes (Haute-Savioe). Rule France 1941 only - May 5 0:00 2:00 M # Midsummer -# Shanks says this transition occurred at Oct 6 1:00, +# Shanks & Pottenger say this transition occurred at Oct 6 1:00, # but go with Denis Excoffier (1997-12-12), # who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes # as saying 5/10/41 22hUT. @@ -1056,21 +1065,21 @@ Rule France 1944 only - Apr 3 2:00 2:00 M Rule France 1944 only - Oct 8 1:00 1:00 S Rule France 1945 only - Apr 2 2:00 2:00 M Rule France 1945 only - Sep 16 3:00 0 - -# Shanks gives Mar 28 2:00 and Sep 26 3:00; +# Shanks & Pottenger give Mar 28 2:00 and Sep 26 3:00; # go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT. Rule France 1976 only - Mar 28 1:00 1:00 S Rule France 1976 only - Sep 26 1:00 0 - -# Shanks gives 0:09 for Paris Mean Time, and Whitman gives 0:09:05, +# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05, # but Howse quotes the actual French legislation as saying 0:09:21. # Go with Howse. Howse writes that the time in France was officially based # on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01 0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT -# Shanks gives 1940 Jun 14 0:00; go with Excoffier and Le Corre. +# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre. 0:00 France WE%sT 1940 Jun 14 23:00 # Le Corre says Paris stuck with occupied-France time after the liberation; -# go with Shanks. +# go with Shanks & Pottenger. 1:00 C-Eur CE%sT 1944 Aug 25 0:00 France WE%sT 1945 Sep 16 3:00 1:00 France CE%sT 1977 @@ -1121,23 +1130,23 @@ Zone Europe/Berlin 0:53:28 - LMT 1893 Apr # Gibraltar # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 +Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s 0:00 GB-Eire %s 1957 Apr 14 2:00 1:00 - CET 1982 1:00 EU CE%sT # Greece # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks. +# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger. Rule Greece 1932 only - Jul 7 0:00 1:00 S Rule Greece 1932 only - Sep 1 0:00 0 - -# Whitman gives 1941 Apr 25 - ?; go with Shanks. +# Whitman gives 1941 Apr 25 - ?; go with Shanks & Pottenger. Rule Greece 1941 only - Apr 7 0:00 1:00 S -# Whitman gives 1942 Feb 2 - ?; go with Shanks. +# Whitman gives 1942 Feb 2 - ?; go with Shanks & Pottenger. Rule Greece 1942 only - Nov 2 3:00 0 - Rule Greece 1943 only - Mar 30 0:00 1:00 S Rule Greece 1943 only - Oct 4 0:00 0 - -# Whitman gives 1944 Oct 3 - Oct 31; go with Shanks. +# Whitman gives 1944 Oct 3 - Oct 31; go with Shanks & Pottenger. Rule Greece 1952 only - Jul 1 0:00 1:00 S Rule Greece 1952 only - Nov 2 0:00 0 - Rule Greece 1975 only - Apr 12 0:00s 1:00 S @@ -1157,7 +1166,7 @@ Zone Europe/Athens 1:34:52 - LMT 1895 Sep 14 2:00 Greece EE%sT 1941 Apr 30 1:00 Greece CE%sT 1944 Apr 4 2:00 Greece EE%sT 1981 - # Shanks says they switched to C-Eur in 1981; + # Shanks & Pottenger say it switched to C-Eur in 1981; # go with EU instead, since Greece joined it on Jan 1. 2:00 EU EE%sT @@ -1220,10 +1229,10 @@ Zone Europe/Budapest 1:16:20 - LMT 1890 Oct # might be a reference to the Julian calendar as opposed to Gregorian, or it # might mean something else (???). # -# From Paul Eggert (1999-10-29): -# The Iceland Almanak, Shanks and Whitman disagree on many points. -# We go with the Almanak, except for one claim from Shanks, namely that -# Reykavik was 21W57 from 1837 to 1908, local mean time before that. +# From Paul Eggert (2006-03-22): +# The Iceland Almanak, Shanks & Pottenger, and Whitman disagree on many points. +# We go with the Almanak, except for one claim from Shanks & Pottenger, namely +# that Reykavik was 21W57 from 1837 to 1908, local mean time before that. # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Iceland 1917 1918 - Feb 19 23:00 1:00 S @@ -1261,15 +1270,16 @@ Zone Atlantic/Reykjavik -1:27:24 - LMT 1837 # But these events all occurred before the 1970 cutoff, # so record only the time in Rome. # -# From Paul Eggert (1996-05-06): -# For Italian DST we have three sources: Shanks, Whitman, and F. Pollastri +# From Paul Eggert (2006-03-22): +# For Italian DST we have three sources: Shanks & Pottenger, Whitman, and +# F. Pollastri # <a href="http://toi.iriti.cnr.it/uk/ienitlt.html"> -# Day-light Saving Time in Italy (1996-03-14) +# Day-light Saving Time in Italy (2006-02-03) # </a> # (`FP' below), taken from an Italian National Electrotechnical Institute # publication. When the three sources disagree, guess who's right, as follows: # -# year FP Shanks (S) Whitman (W) Go with: +# year FP Shanks&P. (S) Whitman (W) Go with: # 1916 06-03 06-03 24:00 06-03 00:00 FP & W # 09-30 09-30 24:00 09-30 01:00 FP; guess 24:00s # 1917 04-01 03-31 24:00 03-31 00:00 FP & S @@ -1325,7 +1335,7 @@ Rule Italy 1978 only - Oct 1 0:00s 0 - Rule Italy 1979 only - Sep 30 0:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Rome 0:49:56 - LMT 1866 Sep 22 - 0:49:56 - RMT 1893 Nov # Rome Mean Time + 0:49:56 - RMT 1893 Nov 1 0:00s # Rome Mean 1:00 Italy CE%sT 1942 Nov 2 2:00s 1:00 C-Eur CE%sT 1944 Jul 1:00 Italy CE%sT 1980 @@ -1467,7 +1477,8 @@ Zone Europe/Vilnius 1:41:16 - LMT 1880 2:00 EU EE%sT # Luxembourg -# Whitman disagrees with most of these dates in minor ways; go with Shanks. +# Whitman disagrees with most of these dates in minor ways; +# go with Shanks & Pottenger. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Lux 1916 only - May 14 23:00 1:00 S Rule Lux 1916 only - Oct 1 1:00 0 - @@ -1502,7 +1513,7 @@ Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun 1:00 EU CE%sT # Macedonia -# see Serbia and Montenegro +# see Serbia # Malta # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -1514,7 +1525,7 @@ Rule Malta 1975 1979 - Apr Sun>=15 2:00 1:00 S Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 - Rule Malta 1980 only - Mar 31 2:00 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 # Valletta +Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta 1:00 Italy CE%sT 1942 Nov 2 2:00s 1:00 C-Eur CE%sT 1945 Apr 2 2:00s 1:00 Italy CE%sT 1973 Mar 31 @@ -1523,9 +1534,9 @@ Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 # Valletta # Moldova -# From Paul Eggert (2001-02-11): -# A previous version of this database followed Shanks, who writes that -# Tiraspol switched to Moscow time on 1992-01-19 at 02:00. +# From Paul Eggert (2006-03-22): +# A previous version of this database followed Shanks & Pottenger, who write +# that Tiraspol switched to Moscow time on 1992-01-19 at 02:00. # However, this is most likely an error, as Moldova declared independence # on 1991-08-27 (the 1992-01-19 date is that of a Russian decree). # In early 1992 there was large-scale interethnic violence in the area @@ -1550,7 +1561,8 @@ Zone Europe/Chisinau 1:55:20 - LMT 1880 2:00 EU EE%sT # Monaco -# Shanks gives 0:09 for Paris Mean Time; go with Howse's more precise 0:09:21. +# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's +# more precise 0:09:21. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time @@ -1558,6 +1570,9 @@ Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15 1:00 France CE%sT 1977 1:00 EU CE%sT +# Montenegro +# see Serbia + # Netherlands # Howse writes that the Netherlands' railways used GMT between 1892 and 1940, @@ -1633,7 +1648,8 @@ Zone Europe/Amsterdam 0:19:32 - LMT 1835 1:00 EU CE%sT # Norway -# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks. +# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks & +# Pottenger. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Norway 1916 only - May 22 1:00 1:00 S Rule Norway 1916 only - Sep 30 0:00 0 - @@ -1704,9 +1720,10 @@ Link Europe/Oslo Atlantic/Jan_Mayen # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Poland 1918 1919 - Sep 16 2:00s 0 - Rule Poland 1919 only - Apr 15 2:00s 1:00 S -# Whitman gives 1944 Nov 30; go with Shanks. +Rule Poland 1944 only - Apr 3 2:00s 1:00 S +# Whitman gives 1944 Nov 30; go with Shanks & Pottenger. Rule Poland 1944 only - Oct 4 2:00 0 - -# For 1944-1948 Whitman gives the previous day; go with Shanks. +# For 1944-1948 Whitman gives the previous day; go with Shanks & Pottenger. Rule Poland 1945 only - Apr 29 0:00 1:00 S Rule Poland 1945 only - Nov 1 0:00 0 - # For 1946 on the source is Kazimierz Borkowski, @@ -1762,9 +1779,9 @@ Zone Europe/Warsaw 1:24:00 - LMT 1880 # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # DSH writes that despite Decree 1,469 (1915), the change to the clocks was not # done every year, depending on what Spain did, because of railroad schedules. -# Go with Shanks. +# Go with Shanks & Pottenger. Rule Port 1916 only - Jun 17 23:00 1:00 S -# Whitman gives 1916 Oct 31; go with Shanks. +# Whitman gives 1916 Oct 31; go with Shanks & Pottenger. Rule Port 1916 only - Nov 1 1:00 0 - Rule Port 1917 only - Feb 28 23:00s 1:00 S Rule Port 1917 1921 - Oct 14 23:00s 0 - @@ -1780,24 +1797,23 @@ Rule Port 1927 only - Apr 9 23:00s 1:00 S Rule Port 1928 only - Apr 14 23:00s 1:00 S Rule Port 1929 only - Apr 20 23:00s 1:00 S Rule Port 1931 only - Apr 18 23:00s 1:00 S -# Whitman gives 1931 Oct 8; go with Shanks. +# Whitman gives 1931 Oct 8; go with Shanks & Pottenger. Rule Port 1931 1932 - Oct Sat>=1 23:00s 0 - Rule Port 1932 only - Apr 2 23:00s 1:00 S -# Shanks gives 1934 Apr 4; go with Whitman. Rule Port 1934 only - Apr 7 23:00s 1:00 S -# Whitman gives 1934 Oct 5; go with Shanks. +# Whitman gives 1934 Oct 5; go with Shanks & Pottenger. Rule Port 1934 1938 - Oct Sat>=1 23:00s 0 - -# Shanks gives 1935 Apr 30; go with Whitman. +# Shanks & Pottenger give 1935 Apr 30; go with Whitman. Rule Port 1935 only - Mar 30 23:00s 1:00 S Rule Port 1936 only - Apr 18 23:00s 1:00 S -# Whitman gives 1937 Apr 2; go with Shanks. +# Whitman gives 1937 Apr 2; go with Shanks & Pottenger. Rule Port 1937 only - Apr 3 23:00s 1:00 S Rule Port 1938 only - Mar 26 23:00s 1:00 S Rule Port 1939 only - Apr 15 23:00s 1:00 S -# Whitman gives 1939 Oct 7; go with Shanks. +# Whitman gives 1939 Oct 7; go with Shanks & Pottenger. Rule Port 1939 only - Nov 18 23:00s 0 - Rule Port 1940 only - Feb 24 23:00s 1:00 S -# Shanks gives 1940 Oct 7; go with Whitman. +# Shanks & Pottenger give 1940 Oct 7; go with Whitman. Rule Port 1940 1941 - Oct 5 23:00s 0 - Rule Port 1941 only - Apr 5 23:00s 1:00 S Rule Port 1942 1945 - Mar Sat>=8 23:00s 1:00 S @@ -1811,8 +1827,8 @@ Rule Port 1946 only - Apr Sat>=1 23:00s 1:00 S Rule Port 1946 only - Oct Sat>=1 23:00s 0 - Rule Port 1947 1949 - Apr Sun>=1 2:00s 1:00 S Rule Port 1947 1949 - Oct Sun>=1 2:00s 0 - -# Shanks says DST was observed in 1950; go with Whitman. -# Whitman gives Oct lastSun for 1952 on; go with Shanks. +# Shanks & Pottenger say DST was observed in 1950; go with Whitman. +# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger. Rule Port 1951 1965 - Apr Sun>=1 2:00s 1:00 S Rule Port 1951 1965 - Oct Sun>=1 2:00s 0 - Rule Port 1977 only - Mar 27 0:00s 1:00 S @@ -1824,7 +1840,7 @@ Rule Port 1980 only - Mar lastSun 0:00s 1:00 S Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S Rule Port 1983 only - Mar lastSun 2:00s 1:00 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] -# Shanks says that the transition from LMT to WET occurred 1911-05-24; +# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24; # Willett says 1912-01-01. Go with Willett. Zone Europe/Lisbon -0:36:32 - LMT 1884 -0:36:32 - LMT 1912 Jan 1 # Lisbon Mean Time @@ -1877,11 +1893,12 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct # Russia -# From Paul Eggert (1999-11-12): +# From Paul Eggert (2006-03-22): # Except for Moscow after 1919-07-01, I invented the time zone abbreviations. # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991, -# are from Andrey A. Chernov. The rest is from Shanks, except we follow -# Chernov's report that 1992 DST transitions were Sat 23:00, not Sun 02:00s. +# are from Andrey A. Chernov. The rest is from Shanks & Pottenger, +# except we follow Chernov's report that 1992 DST transitions were Sat +# 23:00, not Sun 02:00s. # # From Stanislaw A. Kuzikowski (1994-06-29): # But now it is some months since Novosibirsk is 3 hours ahead of Moscow! @@ -1926,20 +1943,20 @@ Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr 2:00 Russia EE%sT # # From Oscar van Vlijmen (2001-08-25): [This region consists of] -# Respublika Adygeya, Arkhangel'skaya oblast', Astrakhanskaya oblast', +# Respublika Adygeya, Arkhangel'skaya oblast', # Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast', -# Volgogradskaya oblast', Vologodskaya oblast', Voronezhskaya oblast', +# Vologodskaya oblast', Voronezhskaya oblast', # Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya, # Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya, # Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya, -# Respublika Kareliya, Kirovskaya oblast', Respublika Komi, +# Respublika Kareliya, Respublika Komi, # Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast', # Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El, # Respublika Mordoviya, Moskva, Moskovskaya oblast', # Murmanskaya oblast', Nenetskij avtonomnyj okrug, # Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast', # Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast', -# Ryazanskaya oblast', Sankt-Peterburg, Saratovskaya oblast', +# Ryazanskaya oblast', Sankt-Peterburg, # Respublika Severnaya Osetiya, Smolenskaya oblast', # Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan, # Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast', @@ -1954,11 +1971,25 @@ Zone Europe/Moscow 2:30:20 - LMT 1880 2:00 Russia EE%sT 1992 Jan 19 2:00s 3:00 Russia MSK/MSD # +# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast', +# Volgogradskaya oblast'. Shanks & Pottenger say Kirov is still at +0400 +# but Wikipedia (2006-05-09) says +0300. Perhaps it switched after the +# others? But we have no data. +Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3 + 3:00 - TSAT 1925 Apr 6 # Tsaritsyn Time + 3:00 - STAT 1930 Jun 21 # Stalingrad Time + 4:00 - STAT 1961 Nov 11 + 4:00 Russia VOL%sT 1989 Mar 26 2:00s # Volgograd T + 3:00 Russia VOL%sT 1991 Mar 31 2:00s + 4:00 - VOLT 1992 Mar 29 2:00s + 3:00 Russia VOL%sT +# # From Oscar van Vlijmen (2001-08-25): [This region consists of] # Samarskaya oblast', Udmyrtskaya respublika Zone Europe/Samara 3:20:36 - LMT 1919 Jul 1 2:00 - 3:00 - KUYT 1930 Jun 21 # Kuybyshev - 4:00 Russia KUY%sT 1989 Mar 26 2:00s + 3:00 - SAMT 1930 Jun 21 + 4:00 - SAMT 1935 Jan 27 + 4:00 Russia KUY%sT 1989 Mar 26 2:00s # Kuybyshev 3:00 Russia KUY%sT 1991 Mar 31 2:00s 2:00 Russia KUY%sT 1991 Sep 29 2:00s 3:00 - KUYT 1991 Oct 20 3:00 @@ -1984,17 +2015,19 @@ Zone Asia/Omsk 4:53:36 - LMT 1919 Nov 14 5:00 Russia OMS%sT 1992 Jan 19 2:00s 6:00 Russia OMS%sT # -# Novosibirskaya oblast'. +# From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's +# not clear when it switched from +7 to +6. +# Novosibirskaya oblast', Tomskaya oblast'. Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00 6:00 - NOVT 1930 Jun 21 # Novosibirsk Time 7:00 Russia NOV%sT 1991 Mar 31 2:00s 6:00 Russia NOV%sT 1992 Jan 19 2:00s - 7:00 Russia NOV%sT 1993 May 23 # says Shanks + 7:00 Russia NOV%sT 1993 May 23 # say Shanks & P. 6:00 Russia NOV%sT # # From Oscar van Vlijmen (2001-08-25): [This region consists of] # Kemerovskaya oblast', Krasnoyarskij kraj, -# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug, Tomskaya oblast', +# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug, # Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug. Zone Asia/Krasnoyarsk 6:11:20 - LMT 1920 Jan 6 6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time @@ -2077,7 +2110,7 @@ Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2 11:00 Russia ANA%sT 1992 Jan 19 2:00s 12:00 Russia ANA%sT -# Serbia and Montenegro +# Serbia # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Belgrade 1:22:00 - LMT 1884 1:00 - CET 1941 Apr 18 23:00 @@ -2085,10 +2118,11 @@ Zone Europe/Belgrade 1:22:00 - LMT 1884 1:00 1:00 CEST 1945 Sep 16 2:00s # Metod Kozelj reports that the legal date of # transition to EU rules was 1982-11-27, for all of Yugoslavia at the time. -# Shanks doesn't give as much detail, so go with Kozelj. +# Shanks & Pottenger don't give as much detail, so go with Kozelj. 1:00 - CET 1982 Nov 27 1:00 EU CE%sT Link Europe/Belgrade Europe/Ljubljana # Slovenia +Link Europe/Belgrade Europe/Podgorica # Montenegro Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina Link Europe/Belgrade Europe/Skopje # Macedonia Link Europe/Belgrade Europe/Zagreb # Croatia @@ -2097,32 +2131,34 @@ Link Europe/Belgrade Europe/Zagreb # Croatia Link Europe/Prague Europe/Bratislava # Slovenia -# see Serbia and Montenegro +# see Serbia # Spain # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1; go with Shanks. +# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1; +# go with Shanks & Pottenger. Rule Spain 1917 only - May 5 23:00s 1:00 S Rule Spain 1917 1919 - Oct 6 23:00s 0 - Rule Spain 1918 only - Apr 15 23:00s 1:00 S Rule Spain 1919 only - Apr 5 23:00s 1:00 S -# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks. +# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks & Pottenger. Rule Spain 1924 only - Apr 16 23:00s 1:00 S -# Whitman gives 1924 Oct 14; go with Shanks. +# Whitman gives 1924 Oct 14; go with Shanks & Pottenger. Rule Spain 1924 only - Oct 4 23:00s 0 - Rule Spain 1926 only - Apr 17 23:00s 1:00 S -# Whitman says no DST in 1929; go with Shanks. +# Whitman says no DST in 1929; go with Shanks & Pottenger. Rule Spain 1926 1929 - Oct Sat>=1 23:00s 0 - Rule Spain 1927 only - Apr 9 23:00s 1:00 S Rule Spain 1928 only - Apr 14 23:00s 1:00 S Rule Spain 1929 only - Apr 20 23:00s 1:00 S -# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13; go with Shanks. +# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13; +# go with Shanks & Pottenger. Rule Spain 1937 only - May 22 23:00s 1:00 S Rule Spain 1937 1939 - Oct Sat>=1 23:00s 0 - Rule Spain 1938 only - Mar 22 23:00s 1:00 S Rule Spain 1939 only - Apr 15 23:00s 1:00 S Rule Spain 1940 only - Mar 16 23:00s 1:00 S -# Whitman says no DST 1942-1945; go with Shanks. +# Whitman says no DST 1942-1945; go with Shanks & Pottenger. Rule Spain 1942 only - May 2 22:00s 2:00 M # Midsummer Rule Spain 1942 only - Sep 1 22:00s 1:00 S Rule Spain 1943 1946 - Apr Sat>=13 22:00s 2:00 M @@ -2149,7 +2185,7 @@ Rule SpainAfrica 1977 only - Sep 28 0:00 0 - Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S Rule SpainAfrica 1978 only - Aug 4 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Europe/Madrid -0:14:44 - LMT 1901 +Zone Europe/Madrid -0:14:44 - LMT 1901 Jan 1 0:00s 0:00 Spain WE%sT 1946 Sep 30 1:00 Spain CE%sT 1979 1:00 EU CE%sT @@ -2171,7 +2207,7 @@ Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C. # Sweden -# From Ivan Nilsson (2001-04-13), superseding Shanks: +# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger: # # The law "Svensk forfattningssamling 1878, no 14" about standard time in 1879: # From the beginning of 1879 (that is 01-01 00:00) the time for all @@ -2232,7 +2268,7 @@ Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1 # From Whitman (who writes ``Midnight?''): Rule Swiss 1940 only - Nov 2 0:00 1:00 S Rule Swiss 1940 only - Dec 31 0:00 0 - -# From Shanks: +# From Shanks & Pottenger: Rule Swiss 1941 1942 - May Sun>=1 2:00 1:00 S Rule Swiss 1941 1942 - Oct Sun>=1 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -2251,7 +2287,8 @@ Rule Turkey 1921 only - Apr 3 0:00 1:00 S Rule Turkey 1921 only - Oct 3 0:00 0 - Rule Turkey 1922 only - Mar 26 0:00 1:00 S Rule Turkey 1922 only - Oct 8 0:00 0 - -# Whitman gives 1923 Apr 28 - Sep 16 and no DST in 1924-1925; go with Shanks. +# Whitman gives 1923 Apr 28 - Sep 16 and no DST in 1924-1925; +# go with Shanks & Pottenger. Rule Turkey 1924 only - May 13 0:00 1:00 S Rule Turkey 1924 1925 - Oct 1 0:00 0 - Rule Turkey 1925 only - May 1 0:00 1:00 S @@ -2260,7 +2297,8 @@ Rule Turkey 1940 only - Oct 5 0:00 0 - Rule Turkey 1940 only - Dec 1 0:00 1:00 S Rule Turkey 1941 only - Sep 21 0:00 0 - Rule Turkey 1942 only - Apr 1 0:00 1:00 S -# Whitman omits the next two transition and gives 1945 Oct 1; go with Shanks. +# Whitman omits the next two transition and gives 1945 Oct 1; +# go with Shanks & Pottenger. Rule Turkey 1942 only - Nov 1 0:00 0 - Rule Turkey 1945 only - Apr 2 0:00 1:00 S Rule Turkey 1945 only - Oct 8 0:00 0 - @@ -2357,11 +2395,13 @@ Zone Europe/Simferopol 2:16:24 - LMT 1880 3:00 Russia MSK/MSD 1990 3:00 - MSK 1990 Jul 1 2:00 2:00 - EET 1992 -# From Paul Eggert (1999-11-12): +# From Paul Eggert (2006-03-22): # The _Economist_ (1994-05-28, p 45) reports that central Crimea switched # from Kiev to Moscow time sometime after the January 1994 elections. -# Shanks says ``date of change uncertain'', but implies that it happened -# sometime between the 1994 DST switches. For now, guess it changed in May. +# Shanks (1999) says ``date of change uncertain'', but implies that it happened +# sometime between the 1994 DST switches. Shanks & Pottenger simply say +# 1994-09-25 03:00, but that can't be right. For now, guess it +# changed in May. 2:00 E-Eur EE%sT 1994 May # From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev. 3:00 E-Eur MSK/MSD 1996 Mar 31 3:00s diff --git a/timezone/ialloc.c b/timezone/ialloc.c index 8a0c701578..1fc2035f45 100644 --- a/timezone/ialloc.c +++ b/timezone/ialloc.c @@ -1,6 +1,11 @@ +/* +** This file is in the public domain, so clarified as of +** 2006-07-17 by Arthur David Olson. +*/ + #ifndef lint #ifndef NOID -static char elsieid[] = "@(#)ialloc.c 8.29"; +static char elsieid[] = "@(#)ialloc.c 8.30"; #endif /* !defined NOID */ #endif /* !defined lint */ diff --git a/timezone/iso3166.tab b/timezone/iso3166.tab index 1cfaf265c2..8bb8231055 100644 --- a/timezone/iso3166.tab +++ b/timezone/iso3166.tab @@ -1,12 +1,12 @@ # ISO 3166 alpha-2 country codes # -# @(#)iso3166.tab 8.1 +# @(#)iso3166.tab 8.3 # -# From Paul Eggert (2004-06-14): +# From Paul Eggert (2006-09-27): # # This file contains a table with the following columns: # 1. ISO 3166-1 alpha-2 country code, current as of -# ISO 3166-1 Newsletter No. V-10 (2004-04-26). See: +# ISO 3166-1 Newsletter No. V-12 (2006-09-26). See: # <a href="http://www.iso.org/iso/en/prods-services/iso3166ma/index.html"> # ISO 3166 Maintenance agency (ISO 3166/MA) # </a>. @@ -70,7 +70,6 @@ CM Cameroon CN China CO Colombia CR Costa Rica -CS Serbia and Montenegro CU Cuba CV Cape Verde CX Christmas Island @@ -100,6 +99,7 @@ GB Britain (UK) GD Grenada GE Georgia GF French Guiana +GG Guernsey GH Ghana GI Gibraltar GL Greenland @@ -122,12 +122,14 @@ HU Hungary ID Indonesia IE Ireland IL Israel +IM Isle of Man IN India IO British Indian Ocean Territory IQ Iraq IR Iran IS Iceland IT Italy +JE Jersey JM Jamaica JO Jordan JP Japan @@ -156,6 +158,7 @@ LY Libya MA Morocco MC Monaco MD Moldova +ME Montenegro MG Madagascar MH Marshall Islands MK Macedonia @@ -204,6 +207,7 @@ PY Paraguay QA Qatar RE Reunion RO Romania +RS Serbia RU Russia RW Rwanda SA Saudi Arabia diff --git a/timezone/northamerica b/timezone/northamerica index 73e2470e0b..3d80c5e3c2 100644 --- a/timezone/northamerica +++ b/timezone/northamerica @@ -1,4 +1,4 @@ -# @(#)northamerica 8.1 +# @(#)northamerica 8.10 # <pre> # also includes Central America and the Caribbean @@ -30,12 +30,12 @@ # That 1883 transition occurred at 12:00 new time, not at 12:00 old time. # See p 46 of David Prerau, Seize the daylight, Thunder's Mouth Press (2005). -# From Paul Eggert (1995-12-19): +# From Paul Eggert (2006-03-22): # A good source for time zone historical data in the US is # Thomas G. Shanks, The American Atlas (5th edition), # San Diego: ACS Publications, Inc. (1991). # Make sure you have the errata sheet; the book is somewhat useless without it. -# It is the source for most of the pre-1991 US and Puerto Rico entries below. +# It is the source for most of the pre-1991 US entries below. # From Paul Eggert (2001-03-06): # Daylight Saving Time was first suggested as a joke by Benjamin Franklin @@ -229,7 +229,7 @@ Zone PST8PDT -8:00 US P%sT # Public law 106-564 (2000-12-23) introduced the abbreviation # "Chamorro Standard Time" for time in Guam and the Northern Marianas. # See the file "australasia". - + # From Arthur David Olson, 2005-08-09 # The following was signed into law on 2005-08-08. # @@ -274,7 +274,7 @@ Zone PST8PDT -8:00 US P%sT # set their watches and clocks on Eastern time." It quotes H.H. "Bubba" # Roberts, city administrator in Phenix City. as saying "We are in the Central # time zone, but we do go by the Eastern time zone because so many people work -# in Columbus." +# in Columbus." # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule NYC 1920 only - Mar lastSun 2:00 1:00 D @@ -301,6 +301,13 @@ Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58 # Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota, # western Tennessee, most of Texas, Wisconsin +# From Larry M. Smith (2006-04-26) re Wisconsin: +# http://www.legis.state.wi.us/statutes/Stat0175.pdf ... +# is currently enforced at the 01:00 time of change. Because the local +# "bar time" in the state corresponds to 02:00, a number of citations +# are issued for the "sale of class 'B' alcohol after prohibited +# hours" within the deviated hour of this change every year.... + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule Chicago 1920 only - Jun 13 2:00 1:00 D Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S @@ -321,14 +328,16 @@ Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:09:24 Zone America/North_Dakota/Center -6:45:12 - LMT 1883 Nov 18 12:14:48 -7:00 US M%sT 1992 Oct 25 02:00 -6:00 US C%sT -# From Paul Eggert (2006-01-20): -# The following is not implemented yet. -# What is the most populous city in that area? -# From http://www.statoids.com/tus.html (2006-01-20): -# 2003-10-26 02:00: All of Morton County, ND, and the part of Sioux -# County, ND east of ND route 31 moved from MT to CT. (The area -# around Fort Yates in Sioux County and the area around Mandan in -# Morton County were already in CT.) +# Morton County, ND, switched from mountain to central time on +# 2003-10-26, except for the area around Mandan which was already central time. +# See <http://dmses.dot.gov/docimages/p63/135818.pdf>. +# Officially this switch also included part of Sioux County, and +# Jones, Mellette, and Todd Counties in South Dakota; +# but in practice these other counties were already observing central time. +# See <http://www.epa.gov/fedrgstr/EPA-IMPACT/2003/October/Day-28/i27056.htm>. +Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21 + -7:00 US M%sT 2003 Oct 26 02:00 + -6:00 US C%sT # US mountain time, represented by Denver # @@ -407,7 +416,8 @@ Zone America/Yakutat 14:41:05 - LMT 1867 Oct 18 Zone America/Anchorage 14:00:24 - LMT 1867 Oct 18 -9:59:36 - LMT 1900 Aug 20 12:00 -10:00 - CAT 1942 - -10:00 US CAT/CAWT 1946 + -10:00 US CAT/CAWT 1945 Aug 14 23:00u + -10:00 US CAT/CAPT 1946 # Peace -10:00 - CAT 1967 Apr -10:00 - AHST 1969 -10:00 US AH%sT 1983 Oct 30 2:00 @@ -527,9 +537,9 @@ Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11 # For a map of Indiana's time zone regions, see: # <a href="http://www.mccsc.edu/time.html"> # What time is it in Indiana? -# </a> (2005-10-30) +# </a> (2006-03-01) # -# From Paul Eggert (2006-01-20): +# From Paul Eggert (2006-03-22): # Since 1970, most of Indiana has been like America/Indiana/Indianapolis, # with the following exceptions: # @@ -549,6 +559,7 @@ Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11 # # Shanks partitioned Indiana into 345 regions, each with its own time history, # and wrote ``Even newspaper reports present contradictory information.'' +# Those Hoosiers! Such a flighty and changeable people! # Fortunately, most of the complexity occurred before our cutoff date of 1970. # # Other than Indianapolis, the Indiana place names are so nondescript @@ -558,8 +569,10 @@ Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11 # From Paul Eggert (2005-08-16): # http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006. +# From Nathan Stratton Treadway (2006-03-30): +# http://www.dot.gov/affairs/dot0406.htm [3705 B] # From Deborah Goldsmith (2006-01-18): -# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf +# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB] # From Paul Eggert (2006-01-20): # It says "DOT is relocating the time zone boundary in Indiana to move Starke, # Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the @@ -625,7 +638,7 @@ Zone America/Indiana/Vincennes -5:50:07 - LMT 1883 Nov 18 12:09:53 -5:00 US E%sT 1971 -5:00 - EST 2006 Apr 2 2:00 -6:00 US C%sT -# +# # Pike County, Indiana moved from central to eastern time in 1977, # then switched back in 2006. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER @@ -818,10 +831,10 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00 ################################################################################ -# From Paul Eggert (1999-10-29): -# A good source for time zone historical data outside the US is -# Thomas G. Shanks, The International Atlas (5th edition), -# San Diego: ACS Publications, Inc. (1999). +# From Paul Eggert (2006-03-22): +# A good source for time zone historical data outside the U.S. is +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), +# San Diego: ACS Publications, Inc. (2003). # # Gwillim Law writes that a good source # for recent time zone data is the International Air Transport @@ -829,8 +842,8 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00 # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. # -# Except where otherwise noted, Shanks is the source for entries through 1990, -# and IATA SSIM is the source for entries after 1990. +# Except where otherwise noted, Shanks & Pottenger is the source for +# entries through 1990, and IATA SSIM is the source for entries afterwards. # # Other sources occasionally used include: # @@ -878,9 +891,51 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00 # From Paul Eggert (1994-11-22): # Alas, this sort of thing must be handled by localization software. -# Unless otherwise specified, the data for Canada are all from Shanks. - -# From Paul Eggert (2005-12-21): +# Unless otherwise specified, the data for Canada are all from Shanks +# & Pottenger. + +# From Chris Walton (2006-04-01): +# The British Columbia government announced yesterday that it will +# adjust daylight savings next year to align with changes in the +# U.S. and the rest of Canada.... +# http://www2.news.gov.bc.ca/news_releases_2005-2009/2006AG0014-000330.htm + +# From Chris Walton (2006-04-25): +# Daylight saving time will be extended by four weeks starting in 2007.... +# Here is a news release which was issued today by the Nova Scotia government: +# http://www.gov.ns.ca/news/details.asp?id=20060425004 + +# From Chris Walton (2006-06-26): +# [For New Brunswick] the new legislation dictates that the time change is to +# be done at 02:00 instead of 00:01. +# http://www.gnb.ca/0062/acts/BBA-2006/Chap-19.pdf +# ... +# Manitoba has traditionally changed the clock every fall at 03:00. +# As of 2006, the transition is to take place one hour earlier at 02:00. +# http://web2.gov.mb.ca/laws/statutes/ccsm/o030e.php +# ... +# [Alberta, Ontario, Quebec] will follow US rules. +# http://www.qp.gov.ab.ca/documents/Acts/2006CH03_UNPR.cfm?frm_isbn=0779744934 +# http://www.e-laws.gov.on.ca/DBLaws/Source/Regs/English/2006/R06111_e.htm +# http://www.assnat.qc.ca/eng/37legislature2/Projets-loi/Publics/06-a002.htm +# ... +# P.E.I. will follow US rules. The new legislation is not law yet. +# It passed first reading on April 20.... +# http://www.assembly.pe.ca/bills/pdf_first/62/3/bill-101.pdf +# ... +# Province of Newfoundland and Labrador.... The change is being considered. +# http://www.releases.gov.nl.ca/releases/2006/mpa/0331n01.htm +# ... +# N.W.T. will follow US rules. Whoever maintains the government web site +# does not seem to believe in bookmarks. To see the news release, click the +# following link and search for "Daylight Savings Time Change". Press the +# "Daylight Savings Time Change" link; it will fire off a popup using +# JavaScript. +# http://www.exec.gov.nt.ca/currentnews/currentPR.asp?mode=archive + + + +# From Paul Eggert (2006-04-25): # H. David Matthews and Mary Vincent's map # <a href="http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp"> # "It's about TIME", _Canadian Geographic_ (September-October 1998) @@ -892,25 +947,10 @@ Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00 # information about standard and daylight saving time zones in Canada. # </a> (updated periodically). # Its unofficial information is often taken from Matthews and Vincent. -# -# CBC News reported that Ontario and Manitoba have announced plans to -# follow the US change, and that Nova Scotia is considering it; see -# <http://www.cbc.ca/news/background/daylightsavingtime/> (2005-10-21). -# CBC news also reported that Prince Edward Island is the first -# province in Atlantic Canada to follow the US change, and that Quebec -# had agreed; see <http://www.cbc.ca/pei/story/pe_daylight_20051207.html> -# (2005-12-07). -# -# To reflect all this, the Canada and Winn rules have been adjusted to -# agree with the 2007 US change. This means we assume most of Canada -# will fall into line. However, Alberta, British Columbia, -# Newfoundland, Northwest Territories, and Yukon already have separate -# rules in our database, so for now we'll leave them alone, which -# means that we currently assume these regions will not change their -# rules and will disagree with the US starting in 2007. This -# assumption is probably incorrect, with the possible exception of -# Newfoundland. We plan to adjust the Edm, Vanc, StJohns, and NT_YK -# rules as the corresponding provinces make their announcements. + +# From Paul Eggert (2006-06-27): +# For now, assume all of DST-observing Canada will fall into line with the +# new US DST rules, # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Canada 1918 only - Apr 14 2:00 1:00 D @@ -925,7 +965,7 @@ Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D Rule Canada 2007 max - Nov Sun>=1 2:00 0 S -# Newfoundland (and far southeast Labrador) +# Newfoundland and Labrador # From Paul Eggert (2000-10-02): # Matthews and Vincent (1998) write that Labrador should use NST/NDT, @@ -936,20 +976,21 @@ Rule Canada 2007 max - Nov Sun>=1 2:00 0 S # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule StJohns 1917 only - Apr 8 2:00 1:00 D Rule StJohns 1917 only - Sep 17 2:00 0 S -# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks. +# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger. Rule StJohns 1919 only - May 5 23:00 1:00 D Rule StJohns 1919 only - Aug 12 23:00 0 S -# For 1931-1935 Whitman gives Apr same date; go with Shanks. +# For 1931-1935 Whitman gives Apr same date; go with Shanks & Pottenger. Rule StJohns 1920 1935 - May Sun>=1 23:00 1:00 D Rule StJohns 1920 1935 - Oct lastSun 23:00 0 S -# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks. +# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks & +# Pottenger. Rule StJohns 1936 1941 - May Mon>=9 0:00 1:00 D Rule StJohns 1936 1941 - Oct Mon>=2 0:00 0 S # Whitman gives the following transitions: # 1942 03-01/12-31, 1943 05-30/09-05, 1944 07-10/09-02, 1945 01-01/10-07 -# but go with Shanks and assume they used Canadian rules. +# but go with Shanks & Pottenger and assume they used Canadian rules. # For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives -# Apr 30 - Sep 24; go with Shanks. +# Apr 30 - Sep 24; go with Shanks & Pottenger. Rule StJohns 1946 1950 - May Sun>=8 2:00 1:00 D Rule StJohns 1946 1950 - Oct Sun>=2 2:00 0 S Rule StJohns 1951 1986 - Apr lastSun 2:00 1:00 D @@ -959,9 +1000,12 @@ Rule StJohns 1960 1986 - Oct lastSun 2:00 0 S # INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches # at 00:01 local time. For now, assume it started in 1987. Rule StJohns 1987 only - Apr Sun>=1 0:01 1:00 D -Rule StJohns 1987 max - Oct lastSun 0:01 0 S +Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD -Rule StJohns 1989 max - Apr Sun>=1 0:01 1:00 D +Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D +Rule StJohns 2007 max - Mar Sun>=8 0:01 1:00 D +Rule StJohns 2007 max - Nov Sun>=1 0:01 0 S +# # St John's has an apostrophe, but Posix file names can't have apostrophes. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/St_Johns -3:30:52 - LMT 1884 @@ -989,12 +1033,13 @@ Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay # west Labrador, Nova Scotia, Prince Edward I -# From Paul Eggert (1996-06-12): -# Shanks writes that since 1970 most of this region has been like Halifax. -# Many locales did not observe peacetime DST until 1972; +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger write that since 1970 most of this region has been like +# Halifax. Many locales did not observe peacetime DST until 1972; # Glace Bay, NS is the largest that we know of. -# Shanks also writes that Liverpool, NS was the only town in Canada to observe -# DST in 1971 but not 1970; for now we'll assume this is a typo. +# Shanks & Pottenger also write that Liverpool, NS was the only town +# in Canada to observe DST in 1971 but not 1970; for now we'll assume +# this is a typo. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Halifax 1916 only - Apr 1 0:00 1:00 D @@ -1060,10 +1105,7 @@ Zone America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 # <http://www.gnb.ca/0062/PDF-acts/t-06.pdf> says they change at 00:01, and # <http://www.canlii.org/nb/laws/sta/t-6/20030127/whole.html> makes it # clear that this has been the case since at least 1993. -# For now, assume it started in 1993. The Office of the Premier announced -# <http://www.gnb.ca/cnb/news/pre/2005e1737pr.htm> (2005-12-23) -# that they will bring forward proposed amendments to harmonize with the US; -# for now assume that this will happen, but they'll still switch at 00:01. +# For now, assume it started in 1993. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D @@ -1076,11 +1118,9 @@ Rule Moncton 1940 only - May 19 1:00 1:00 D Rule Moncton 1941 only - May 4 1:00 1:00 D Rule Moncton 1946 1972 - Apr lastSun 2:00 1:00 D Rule Moncton 1946 1956 - Sep lastSun 2:00 0 S -Rule Moncton 1956 1972 - Oct lastSun 2:00 0 S +Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S -Rule Moncton 2007 max - Mar Sun>=8 0:01 1:00 D -Rule Moncton 2007 max - Nov Sun>=1 0:01 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 -5:00 - EST 1902 Jun 15 @@ -1089,13 +1129,79 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 -4:00 Canada A%sT 1946 -4:00 Moncton A%sT 1973 -4:00 Canada A%sT 1993 - -4:00 Moncton A%sT + -4:00 Moncton A%sT 2007 + -4:00 Canada A%sT -# Ontario, Quebec +# Quebec + +# From Paul Eggert (2006-07-09): +# Shanks & Pottenger write that since 1970 most of Quebec has been +# like Montreal. + +# From Paul Eggert (2006-06-27): +# Matthews and Vincent (1998) also write that Quebec east of the -63 +# meridian is supposed to observe AST, but residents as far east as +# Natashquan use EST/EDT, and residents east of Natashquan use AST. +# In "Official time in Quebec" the Quebec department of justice writes in +# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.htm +# that "The residents of the Municipality of the +# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin, +# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is +# written and use Atlantic standard time all year round. The same applies to +# the residents of the Native facilities along the lower North Shore." +# <http://www.assnat.qc.ca/eng/37legislature2/Projets-loi/Publics/06-a002.htm> +# says this common practice was codified into law as of 2007. +# For lack of better info, guess this practice began around 1970, contra to +# Shanks & Pottenger who have this region observing AST/ADT. -# From Paul Eggert (1996-06-12): -# Shanks writes that since 1970 most of Ontario has been like Toronto, -# and most of Quebec has been like Montreal. +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Mont 1917 only - Mar 25 2:00 1:00 D +Rule Mont 1917 only - Apr 24 0:00 0 S +Rule Mont 1919 only - Mar 31 2:30 1:00 D +Rule Mont 1919 only - Oct 25 2:30 0 S +Rule Mont 1920 only - May 2 2:30 1:00 D +Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S +Rule Mont 1921 only - May 1 2:00 1:00 D +Rule Mont 1922 only - Apr 30 2:00 1:00 D +Rule Mont 1924 only - May 17 2:00 1:00 D +Rule Mont 1924 1926 - Sep lastSun 2:30 0 S +Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D +# The 1927-to-1937 rules can be expressed more simply as +# Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D +# Rule Mont 1927 1937 - Sep lastSat 24:00 0 S +# The rules below avoid use of 24:00 +# (which pre-1998 versions of zic cannot handle). +Rule Mont 1927 only - May 1 0:00 1:00 D +Rule Mont 1927 1932 - Sep lastSun 0:00 0 S +Rule Mont 1928 1931 - Apr lastSun 0:00 1:00 D +Rule Mont 1932 only - May 1 0:00 1:00 D +Rule Mont 1933 1940 - Apr lastSun 0:00 1:00 D +Rule Mont 1933 only - Oct 1 0:00 0 S +Rule Mont 1934 1939 - Sep lastSun 0:00 0 S +Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D +Rule Mont 1945 1948 - Sep lastSun 2:00 0 S +Rule Mont 1949 1950 - Oct lastSun 2:00 0 S +Rule Mont 1951 1956 - Sep lastSun 2:00 0 S +Rule Mont 1957 1973 - Oct lastSun 2:00 0 S + +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Blanc-Sablon -3:48:28 - LMT 1884 + -4:00 Canada A%sT 1970 + -4:00 - AST +Zone America/Montreal -4:54:16 - LMT 1884 + -5:00 Mont E%sT 1918 + -5:00 Canada E%sT 1919 + -5:00 Mont E%sT 1942 Feb 9 2:00s + -5:00 Canada E%sT 1946 + -5:00 Mont E%sT 1974 + -5:00 Canada E%sT + + +# Ontario + +# From Paul Eggert (2006-07-09): +# Shanks & Pottenger write that since 1970 most of Ontario has been like +# Toronto. # Thunder Bay skipped DST in 1973. # Many smaller locales did not observe peacetime DST until 1974; # Nipigon (EST) and Rainy River (CST) are the largest that we know of. @@ -1125,50 +1231,46 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 # says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT. # Officially Atikokan is therefore on CST/CDT, and most likely this report # concerns a non-official time observed as a matter of local practice. -# For what it's worth, Shanks says that Atikokan has agreed with -# Rainy River ever since standard time was introduced. - +# # From Paul Eggert (2000-10-02): # Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and # New Osnaburgh observe CST all year, that Big Trout Lake observes # CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in # violation of the official Ontario rules. -# They also write that Quebec east of the -63 meridian is supposed to -# observe AST, but residents as far east as Natashquan use EST/EDT, -# and residents east of Natashquan use AST. -# We probably need Zones for far east Quebec and for Atikokan, -# but we don't know when their practices started. +# +# From Paul Eggert (2006-07-09): +# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the +# 2005-07-21 Chronicle-Journal, which said: +# +# The clocks in Atikokan stay set on standard time year-round. +# This means they spend about half the time on central time and +# the other half on eastern time. +# +# For the most part, the system works, Mayor Dennis Brown said. +# +# "The majority of businesses in Atikokan deal more with Eastern +# Canada, but there are some that deal with Western Canada," he +# said. "I don't see any changes happening here." +# +# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang +# [New Osnaburgh] follow the same practice." -# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Mont 1917 only - Mar 25 2:00 1:00 D -Rule Mont 1917 only - Apr 24 0:00 0 S -Rule Mont 1919 only - Mar 31 2:30 1:00 D -Rule Mont 1919 only - Oct 25 2:30 0 S -Rule Mont 1920 only - May 2 2:30 1:00 D -Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S -Rule Mont 1921 only - May 1 2:00 1:00 D -Rule Mont 1922 only - Apr 30 2:00 1:00 D -Rule Mont 1924 only - May 17 2:00 1:00 D -Rule Mont 1924 1926 - Sep lastSun 2:30 0 S -Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D -# The 1927-to-1937 rules can be expressed more simply as -# Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D -# Rule Mont 1927 1937 - Sep lastSat 24:00 0 S -# The rules below avoid use of 24:00 -# (which pre-1998 versions of zic cannot handle). -Rule Mont 1927 only - May 1 0:00 1:00 D -Rule Mont 1927 1932 - Sep lastSun 0:00 0 S -Rule Mont 1928 1931 - Apr lastSun 0:00 1:00 D -Rule Mont 1932 only - May 1 0:00 1:00 D -Rule Mont 1933 1940 - Apr lastSun 0:00 1:00 D -Rule Mont 1933 only - Oct 1 0:00 0 S -Rule Mont 1934 1939 - Sep lastSun 0:00 0 S -Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D -Rule Mont 1945 1948 - Sep lastSun 2:00 0 S -Rule Mont 1949 1950 - Oct lastSun 2:00 0 S -Rule Mont 1951 1956 - Sep lastSun 2:00 0 S -Rule Mont 1957 1973 - Oct lastSun 2:00 0 S +# From Garry McKinnon (2006-07-14) via Chris Walton: +# I chatted with a member of my board who has an outstanding memory +# and a long history in Atikokan (and in the telecom industry) and he +# can say for certain that Atikokan has been practicing the current +# time keeping since 1952, at least. +# From Paul Eggert (2006-07-17): +# Shanks & Pottenger say that Atikokan has agreed with Rainy River +# ever since standard time was introduced, but the information from +# McKinnon sounds more authoritative. For now, assume that Atikokan +# switched to EST immediately after WWII era daylight saving time +# ended. This matches the old (less-populous) America/Coral_Harbour +# entry since our cutoff date of 1970, so we can move +# America/Coral_Harbour to the 'backward' file. + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Toronto 1919 only - Mar 30 23:30 1:00 D Rule Toronto 1919 only - Oct 26 0:00 0 S Rule Toronto 1920 only - May 2 2:00 1:00 D @@ -1176,7 +1278,8 @@ Rule Toronto 1920 only - Sep 26 0:00 0 S Rule Toronto 1921 only - May 15 2:00 1:00 D Rule Toronto 1921 only - Sep 15 2:00 0 S Rule Toronto 1922 1923 - May Sun>=8 2:00 1:00 D -# Shanks says 1923-09-19; assume it's a typo and that "-16" was meant. +# Shanks & Pottenger say 1923-09-19; assume it's a typo and that "-16" +# was meant. Rule Toronto 1922 1926 - Sep Sun>=15 2:00 0 S Rule Toronto 1924 1927 - May Sun>=1 2:00 1:00 D # The 1927-to-1939 rules can be expressed more simply as @@ -1200,9 +1303,10 @@ Rule Toronto 1949 only - Nov lastSun 0:00 0 S Rule Toronto 1950 1973 - Apr lastSun 2:00 1:00 D Rule Toronto 1950 only - Nov lastSun 2:00 0 S Rule Toronto 1951 1956 - Sep lastSun 2:00 0 S -# Shanks says Toronto ended DST a week early in 1971, namely on 1971-10-24, -# but Mark Brader wrote (2003-05-31) that he checked the 1971-10-30 issue -# of the Toronto Star, and it said that DST ended 1971-10-31 as usual. +# Shanks & Pottenger say Toronto ended DST a week early in 1971, +# namely on 1971-10-24, but Mark Brader wrote (2003-05-31) that this +# is wrong, and that he had confirmed it by checking the 1971-10-30 +# Toronto Star, which said that DST was ending 1971-10-31 as usual. Rule Toronto 1957 1973 - Oct lastSun 2:00 0 S # From Paul Eggert (2003-07-27): @@ -1224,13 +1328,6 @@ Rule Toronto 1957 1973 - Oct lastSun 2:00 0 S # months for the remainder of the war years. # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone America/Montreal -4:54:16 - LMT 1884 - -5:00 Mont E%sT 1918 - -5:00 Canada E%sT 1919 - -5:00 Mont E%sT 1942 Feb 9 2:00s - -5:00 Canada E%sT 1946 - -5:00 Mont E%sT 1974 - -5:00 Canada E%sT Zone America/Toronto -5:17:32 - LMT 1895 -5:00 Canada E%sT 1919 -5:00 Toronto E%sT 1942 Feb 9 2:00s @@ -1248,14 +1345,38 @@ Zone America/Nipigon -5:53:04 - LMT 1895 -5:00 Canada E%sT 1940 Sep 29 -5:00 1:00 EDT 1942 Feb 9 2:00s -5:00 Canada E%sT -Zone America/Rainy_River -6:17:56 - LMT 1895 +Zone America/Rainy_River -6:18:16 - LMT 1895 -6:00 Canada C%sT 1940 Sep 29 -6:00 1:00 CDT 1942 Feb 9 2:00s -6:00 Canada C%sT +Zone America/Atikokan -6:06:28 - LMT 1895 + -6:00 Canada C%sT 1940 Sep 29 + -6:00 1:00 CDT 1942 Feb 9 2:00s + -6:00 Canada C%sT 1945 Sep 30 2:00 + -5:00 - EST # Manitoba +# From Rob Douglas (2006-04-06): +# the old Manitoba Time Act - as amended by Bill 2, assented to +# March 27, 1987 ... said ... +# "between two o'clock Central Standard Time in the morning of +# the first Sunday of April of each year and two o'clock Central +# Standard Time in the morning of the last Sunday of October next +# following, one hour in advance of Central Standard Time."... +# I believe that the English legislation [of the old time act] had = +# been assented to (March 22, 1967).... +# Also, as far as I can tell, there was no order-in-council varying +# the time of Daylight Saving Time for 2005 and so the provisions of +# the 1987 version would apply - the changeover was at 2:00 Central +# Standard Time (i.e. not until 3:00 Central Daylight Time). + +# From Paul Eggert (2006-04-10): +# Shanks & Pottenger say Manitoba switched at 02:00 (not 02:00s) +# starting 1966. Since 02:00s is clearly correct for 1967 on, assume +# it was also 02:00s in 1966. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Winn 1916 only - Apr 23 0:00 1:00 D Rule Winn 1916 only - Sep 17 0:00 0 S @@ -1278,18 +1399,13 @@ Rule Winn 1959 only - Oct lastSun 2:00 0 S Rule Winn 1960 only - Sep lastSun 2:00 0 S Rule Winn 1963 only - Apr lastSun 2:00 1:00 D Rule Winn 1963 only - Sep 22 2:00 0 S -Rule Winn 1966 1986 - Apr lastSun 2:00 1:00 D -Rule Winn 1966 1986 - Oct lastSun 2:00 0 S -Rule Winn 1987 2006 - Apr Sun>=1 2:00s 1:00 D -# From Paul Eggert (2000-10-02): -# INMS (2000-09-12) says that, since 1988 at least, Manitoba switches from -# DST at 03:00 local time. For now, assume it started in 1987. -Rule Winn 1987 2006 - Oct lastSun 2:00s 0 S -Rule Winn 2007 max - Mar Sun>=8 2:00s 1:00 D -Rule Winn 2007 max - Nov Sun>=1 2:00s 0 S +Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D +Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S +Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16 - -6:00 Winn C%sT + -6:00 Winn C%sT 2006 + -6:00 Canada C%sT # Saskatchewan @@ -1308,8 +1424,8 @@ Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16 # Willett (1914-03) notes that DST "has been in operation ... in the # City of Moose Jaw, Saskatchewan, for one year." -# From Paul Eggert (2000-10-02): -# Shanks writes that since 1970 most of this region has been like Regina. +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger say that since 1970 this region has mostly been as Regina. # Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972. # Other western towns (e.g. Lloydminster) are like Edmonton. # Matthews and Vincent (1998) write that Denare Beach and Creighton @@ -1341,6 +1457,11 @@ Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16 # rules any more; all other districts appear to have used CST year round # since sometime in the 1960s. +# From Chris Walton (2006-06-26): +# The Saskatchewan time act which was last updated in 1996 is about 30 pages +# long and rather painful to read. +# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Regina 1918 only - Apr 14 2:00 1:00 D Rule Regina 1918 only - Oct 31 2:00 0 S @@ -1395,17 +1516,18 @@ Rule Edm 1967 only - Oct lastSun 2:00 0 S Rule Edm 1969 only - Apr lastSun 2:00 1:00 D Rule Edm 1969 only - Oct lastSun 2:00 0 S Rule Edm 1972 1986 - Apr lastSun 2:00 1:00 D -Rule Edm 1972 max - Oct lastSun 2:00 0 S -Rule Edm 1987 max - Apr Sun>=1 2:00 1:00 D +Rule Edm 1972 2006 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Edmonton -7:33:52 - LMT 1906 Sep - -7:00 Edm M%sT + -7:00 Edm M%sT 1987 + -7:00 Canada M%sT # British Columbia -# From Paul Eggert (2000-10-02): -# Shanks writes that since 1970 most of this region has been like Vancouver. +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger write that since 1970 most of this region has +# been like Vancouver. # Dawson Creek uses MST. Much of east BC is like Edmonton. # Matthews and Vincent (1998) write that Creston is like Dawson Creek. @@ -1418,11 +1540,11 @@ Rule Vanc 1945 only - Sep 30 2:00 0 S Rule Vanc 1946 1986 - Apr lastSun 2:00 1:00 D Rule Vanc 1946 only - Oct 13 2:00 0 S Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S -Rule Vanc 1962 max - Oct lastSun 2:00 0 S -Rule Vanc 1987 max - Apr Sun>=1 2:00 1:00 D +Rule Vanc 1962 2006 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Vancouver -8:12:28 - LMT 1884 - -8:00 Vanc P%sT + -8:00 Vanc P%sT 1987 + -8:00 Canada P%sT Zone America/Dawson_Creek -8:00:56 - LMT 1884 -8:00 Canada P%sT 1947 -8:00 Vanc P%sT 1972 Aug 30 2:00 @@ -1431,7 +1553,7 @@ Zone America/Dawson_Creek -8:00:56 - LMT 1884 # Northwest Territories, Nunavut, Yukon -# From Paul Eggert (1999-10-29): +# From Paul Eggert (2006-03-22): # Dawson switched to PST in 1973. Inuvik switched to MST in 1979. # Mathew Englander (1996-10-07) gives the following refs: # * 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68, @@ -1440,7 +1562,12 @@ Zone America/Dawson_Creek -8:00:56 - LMT 1884 # * C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00. # * O.I.C. 1980/02 established DST. # * O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00. -# Shanks says Yukon's 1973-10-28 switch was at 2:00; go with Englander. +# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go +# with Englander. +# From Chris Walton (2006-06-26): +# Here is a link to the old daylight saving portion of the interpretation +# act which was last updated in 1987: +# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf # From Rives McDow (1999-09-04): # Nunavut ... moved ... to incorporate the whole territory into one time zone. @@ -1549,6 +1676,10 @@ Zone America/Dawson_Creek -8:00:56 - LMT 1884 # For lack of better information, assume that Southampton Island observed # daylight saving only during wartime. +# From Chris Walton (2006-07-19): +# The government of Yukon Territory ... recently announced it will extend +# daylight saving in 2007.... http://www.gov.yk.ca/news/2006/06-164.html + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule NT_YK 1918 only - Apr 14 2:00 1:00 D Rule NT_YK 1918 only - Oct 27 2:00 0 S @@ -1560,8 +1691,8 @@ Rule NT_YK 1945 only - Sep 30 2:00 0 S Rule NT_YK 1965 only - Apr lastSun 0:00 2:00 DD Rule NT_YK 1965 only - Oct lastSun 2:00 0 S Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D -Rule NT_YK 1980 max - Oct lastSun 2:00 0 S -Rule NT_YK 1987 max - Apr Sun>=1 2:00 1:00 D +Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S +Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Pangnirtung -4:22:56 - LMT 1884 -4:00 NT_YK A%sT 1995 Apr Sun>=1 2:00 @@ -1572,10 +1703,11 @@ Zone America/Iqaluit -4:33:52 - LMT 1884 # Frobisher Bay before 1987 -5:00 NT_YK E%sT 1999 Oct 31 2:00 -6:00 Canada C%sT 2000 Oct 29 2:00 -5:00 Canada E%sT -Zone America/Coral_Harbour -5:32:40 - LMT 1884 - -5:00 NT_YK E%sT 1946 - -5:00 - EST -Zone America/Rankin_Inlet -6:08:40 - LMT 1884 +# Now subsumed by America/Atikokan. +#Zone America/Coral_Harbour -5:32:40 - LMT 1884 +# -5:00 NT_YK E%sT 1946 +# -5:00 - EST +Zone America/Rankin_Inlet -6:08:20 - LMT 1884 -6:00 NT_YK C%sT 2000 Oct 29 2:00 -5:00 - EST 2001 Apr 1 3:00 -6:00 Canada C%sT @@ -1586,16 +1718,20 @@ Zone America/Cambridge_Bay -7:00:20 - LMT 1884 -6:00 - CST 2001 Apr 1 3:00 -7:00 Canada M%sT Zone America/Yellowknife -7:37:24 - LMT 1884 - -7:00 NT_YK M%sT -Zone America/Inuvik -8:54:00 - LMT 1884 + -7:00 NT_YK M%sT 1980 + -7:00 Canada M%sT +Zone America/Inuvik -8:54:52 - LMT 1884 -8:00 NT_YK P%sT 1979 Apr lastSun 2:00 - -7:00 NT_YK M%sT + -7:00 NT_YK M%sT 1980 + -7:00 Canada M%sT Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20 -9:00 NT_YK Y%sT 1966 Jul 1 2:00 - -8:00 NT_YK P%sT + -8:00 NT_YK P%sT 1980 + -8:00 Canada P%sT Zone America/Dawson -9:17:40 - LMT 1900 Aug 20 -9:00 NT_YK Y%sT 1973 Oct 28 0:00 - -8:00 NT_YK P%sT + -8:00 NT_YK P%sT 1980 + -8:00 Canada P%sT ############################################################################### @@ -1609,16 +1745,12 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20 # history of Mexican local time (in Spanish) # </a>. # -# Here are the discrepancies between Shanks and the MLoC. +# Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC. # (In all cases we go with the MLoC.) -# Shanks reports that Baja was at -8:00 in 1922/1923. -# Shanks says the 1930 transition in Baja was 1930-11-16. -# Shanks reports no DST during summer 1931. -# Shanks reports a transition at 1932-03-30 23:00, not 1932-04-01. -# Shanks does not report transitions for Baja in 1945 or 1948. -# Shanks reports southern Mexico transitions on 1981-12-01, not 12-23. -# Shanks says Quintana Roo switched to -6:00 on 1982-12-02, and to -5:00 -# on 1997-10-26 at 02:00. +# S&P report that Baja was at -8:00 in 1922/1923. +# S&P say the 1930 transition in Baja was 1930-11-16. +# S&P report no DST during summer 1931. +# S&P report a transition at 1932-03-30 23:00, not 1932-04-01. # From Gwillim Law (2001-02-20): # There are some other discrepancies between the Decrees page and the @@ -1626,10 +1758,6 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20 # the researchers who prepared the Decrees page failed to find some of # the relevant documents. -# From Paul Eggert (2000-07-26): -# Shanks gives 1942-04-01 instead of 1942-04-24, and omits the 1981 -# and 1988 DST experiments. Go with spin.com.mx. - # From Alan Perry (1996-02-15): # A guy from our Mexico subsidiary finally found the Presidential Decree # outlining the timezone changes in Mexico. @@ -1829,7 +1957,8 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56 -8:00 - PST 1931 Apr 1 -8:00 1:00 PDT 1931 Sep 30 -8:00 - PST 1942 Apr 24 - -8:00 1:00 PWT 1945 Nov 12 + -8:00 1:00 PWT 1945 Aug 14 23:00u + -8:00 1:00 PPT 1945 Nov 12 # Peace -8:00 - PST 1948 Apr 5 -8:00 1:00 PDT 1949 Jan 14 -8:00 - PST 1954 @@ -1839,12 +1968,13 @@ Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56 -8:00 Mexico P%sT 2001 -8:00 US P%sT 2002 Feb 20 -8:00 Mexico P%sT -# From Paul Eggert (2001-03-05): +# From Paul Eggert (2006-03-22): # Formerly there was an America/Ensenada zone, which differed from # America/Tijuana only in that it did not observe DST from 1976 -# through 1995. This was as per Shanks. However, Guy Harris reports +# through 1995. This was as per Shanks (1999). But Shanks & Pottenger say +# Ensenada did not observe DST from 1948 through 1975. Guy Harris reports # that the 1987 OAG says "Only Ensenada, Mexicale, San Felipe and -# Tijuana observe DST," which contradicts Shanks but does imply that +# Tijuana observe DST," which agrees with Shanks & Pottenger but implies that # DST-observance was a town-by-town matter back then. This concerns # data after 1970 so most likely there should be at least one Zone # other than America/Tijuana for Baja, but it's not clear yet what its @@ -1888,7 +2018,7 @@ Zone America/Barbados -3:58:28 - LMT 1924 # Bridgetown -4:00 Barb A%sT # Belize -# Whitman entirely disagrees with Shanks; go with Shanks. +# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 HD Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 S @@ -1901,10 +2031,20 @@ Zone America/Belize -5:52:48 - LMT 1912 Apr -6:00 Belize C%sT # Bermuda + +# From Dan Jones, reporting in The Royal Gazette (2006-06-26): + +# Next year, however, clocks in the US will go forward on the second Sunday +# in March, until the first Sunday in November. And, after the Time Zone +# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on +# Friday, the same thing will happen in Bermuda. +# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135 + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Atlantic/Bermuda -4:19:04 - LMT 1930 Jan 1 2:00 # Hamilton -4:00 - AST 1974 Apr 28 2:00 - -4:00 Bahamas A%sT + -4:00 Bahamas A%sT 1976 + -4:00 US A%sT # Cayman Is # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1917,7 +2057,8 @@ Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D -# IATA SSIM (1991-09) says the following was at 1:00; go with Shanks. +# IATA SSIM (1991-09) says the following was at 1:00; +# go with Shanks & Pottenger. Rule CR 1991 only - Jul 1 0:00 0 S Rule CR 1992 only - Mar 15 0:00 0 S # There are too many San Joses elsewhere, so we'll use `Costa Rica'. @@ -1943,18 +2084,26 @@ Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose # From Evert van der Veer via Steffen Thorsen (2004-10-28): # Cuba is not going back to standard time this year. -# From Paul Eggert (2004-10-28): +# From Paul Eggert (2006-03-22): # http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html # says that it's due to a problem at the Antonio Guiteras # thermoelectric plant, and says "This October there will be no return # to normal hours (after daylight saving time)". -# For now, let's assume that it's a one-year temporary measure. +# For now, let's assume that it's a temporary measure. # From Carlos A. Carnero Delgado (2005-11-12): # This year (just like in 2004-2005) there's no change in time zone # adjustment in Cuba. We will stay in daylight saving time: # http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html +# From Jesper Norgaard Welen (2006-10-21): +# An article in GRANMA INTERNACIONAL claims that Cuba will end +# the 3 years of permanent DST next weekend, see +# http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html +# "On Saturday night, October 28 going into Sunday, October 29, at 01:00, +# watches should be set back one hour -- going back to 00:00 hours -- returning +# to the normal schedule.... + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Cuba 1928 only - Jun 10 0:00 1:00 D Rule Cuba 1928 only - Oct 10 0:00 0 S @@ -2033,6 +2182,7 @@ Zone America/Santo_Domingo -4:39:36 - LMT 1890 -4:00 - AST # El Salvador + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D Rule Salv 1987 1988 - Sep lastSun 0:00 0 S @@ -2053,6 +2203,19 @@ Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe a Pitre -4:00 - AST # Guatemala +# +# From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen: +# Diario Co Latino, at +# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079, +# says in an article dated 2006-04-19 that the Guatemalan government had +# decided on that date to advance official time by 60 minutes, to lessen the +# impact of the elevated cost of oil.... Daylight saving time will last from +# 2006-04-29 24:00 (Guatemalan standard time) to 2006-09-30 (time unspecified). +# From Paul Eggert (2006-06-22): +# The Ministry of Energy and Mines, press release CP-15/2006 +# (2006-04-19), says DST ends at 24:00. See +# <http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf>. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Guat 1973 only - Nov 25 0:00 1:00 D Rule Guat 1974 only - Feb 24 0:00 0 S @@ -2060,6 +2223,8 @@ Rule Guat 1983 only - May 21 0:00 1:00 D Rule Guat 1983 only - Sep 22 0:00 0 S Rule Guat 1991 only - Mar 23 0:00 1:00 D Rule Guat 1991 only - Sep 7 0:00 0 S +Rule Guat 2006 only - Apr 30 0:00 1:00 D +Rule Guat 2006 only - Oct 1 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5 -6:00 Guat C%sT @@ -2084,26 +2249,67 @@ Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5 # October 2005. # # "Port-au-Prince, March 31, 2005" +# +# From Steffen Thorsen (2006-04-04): +# I have been informed by users that Haiti observes DST this year like +# last year, so the current "only" rule for 2005 might be changed to a +# "max" rule or to last until 2006. (Who knows if they will observe DST +# next year or if they will extend their DST like US/Canada next year). +# +# I have found this article about it (in French): +# http://www.haitipressnetwork.com/news.cfm?articleID=7612 +# +# The reason seems to be an energy crisis. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Haiti 1983 only - May 8 0:00 1:00 D Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S -# Shanks says AT is 2:00, but IATA SSIM (1991/1997) says 1:00s. Go with IATA. +# Shanks & Pottenger say AT is 2:00, but IATA SSIM (1991/1997) says 1:00s. +# Go with IATA. Rule Haiti 1988 1997 - Apr Sun>=1 1:00s 1:00 D Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S -Rule Haiti 2005 only - Apr Sun>=1 0:00 1:00 D -Rule Haiti 2005 only - Oct lastSun 0:00 0 S +Rule Haiti 2005 max - Apr Sun>=1 0:00 1:00 D +Rule Haiti 2005 max - Oct lastSun 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Port-au-Prince -4:49:20 - LMT 1890 -4:49 - PPMT 1917 Jan 24 12:00 # P-a-P MT -5:00 Haiti E%sT # Honduras -# Shanks says 1921 Jan 1; go with Whitman's more precise Apr 1. +# Shanks & Pottenger say 1921 Jan 1; go with Whitman's more precise Apr 1. + +# From Paul Eggert (2006-05-05): +# worldtimezone.com reports a 2006-05-02 Spanish-language AP article +# saying Honduras will start using DST midnight Saturday, effective 4 +# months until September. La Tribuna reported today +# <http://www.latribuna.hn/99299.html> that Manuel Zelaya, the president +# of Honduras, refused to back down on this. + +# From Jesper Norgaard Welen (2006-08-08): +# It seems that Honduras has returned from DST to standard time this Monday at +# 00:00 hours (prolonging Sunday to 25 hours duration). +# http://www.worldtimezone.com/dst_news/dst_news_honduras04.html + +# From Paul Eggert (2006-08-08): +# Also see Diario El Heraldo, The country returns to standard time (2006-08-08) +# <http://www.elheraldo.hn/nota.php?nid=54941&sec=12>. +# It mentions executive decree 18-2006. + +# From Steffen Thorsen (2006-08-17): +# Honduras will observe DST from 2007 to 2009, exact dates are not +# published, I have located this authoritative source: +# http://www.presidencia.gob.hn/noticia.aspx?nId=47 + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D +Rule Hond 1987 1988 - Sep lastSun 0:00 0 S +Rule Hond 2006 2009 - May Sun>=1 0:00 1:00 D +Rule Hond 2006 2009 - Aug Mon>=1 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr - -6:00 Salv C%sT + -6:00 Hond C%sT # # Great Swan I ceded by US to Honduras in 1972 @@ -2115,7 +2321,7 @@ Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr # From U. S. Naval Observatory (1989-01-19): # JAMAICA 5 H BEHIND UTC -# From Shanks: +# From Shanks & Pottenger: # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Jamaica -5:07:12 - LMT 1890 # Kingston -5:07:12 - KMT 1912 Feb # Kingston Mean Time @@ -2132,18 +2338,16 @@ Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France -4:00 - AST # Montserrat -# From Paul Eggert (1997-08-31): -# Recent volcanic eruptions have forced evacuation of Plymouth, the capital. -# Luckily, Olveston, the current de facto capital, has the same longitude. +# From Paul Eggert (2006-03-22): +# In 1995 volcanic eruptions forced evacuation of Plymouth, the capital. +# world.gazetteer.com says Cork Hill is the most populous location now. # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Olveston +Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill -4:00 - AST # Nicaragua # -# From Steffen Thorsen (1998-12-29): -# Nicaragua seems to be back at -6:00 but I have not been able to find when -# they changed from -5:00. +# This uses Shanks & Pottenger for times before 2005. # # From Steffen Thorsen (2005-04-12): # I've got reports from 8 different people that Nicaragua just started @@ -2157,8 +2361,7 @@ Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Olveston # # From Paul Eggert (2005-05-01): # The decree doesn't say anything about daylight saving, but for now let's -# assume that it is daylight saving and that they'll switch back on the -# 3rd Sunday in September. +# assume that it is daylight saving.... # # From Gwillim Law (2005-04-21): # The Associated Press story on the time change, which can be found at @@ -2176,20 +2379,35 @@ Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Olveston # http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm # (2005-09-26) # +# From Jesper Norgaard Welen (2006-05-05): +# http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410 +# (my informal translation) +# By order of the president of the republic, Enrique Bolanos, Nicaragua +# advanced by sixty minutes their official time, yesterday at 2 in the +# morning, and will stay that way until 30.th. of september. +# +# From Jesper Norgaard Welen (2006-09-30): +# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf +# My informal translation runs: +# The natural sun time is restored in all the national territory, in that the +# time is returned one hour at 01:00 am of October 1 of 2006. +# # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S -Rule Nic 1992 only - Jan 1 4:00 1:00 D -Rule Nic 1992 only - Sep 24 0:00 0 S Rule Nic 2005 only - Apr 10 0:00 1:00 D -Rule Nic 2005 only - Oct 2 0:00 0 S +Rule Nic 2005 only - Oct Sun>=1 0:00 0 S +Rule Nic 2006 only - Apr 30 2:00 1:00 D +Rule Nic 2006 only - Oct Sun>=1 1:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Managua -5:45:08 - LMT 1890 -5:45:12 - MMT 1934 Jun 23 # Managua Mean Time? -6:00 - CST 1973 May -5:00 - EST 1975 Feb 16 - -6:00 Nic C%sT 1993 Jan 1 4:00 - -5:00 - EST 1998 Dec + -6:00 Nic C%sT 1992 Jan 1 4:00 + -5:00 - EST 1992 Sep 24 + -6:00 - CST 1993 + -5:00 - EST 1997 -6:00 Nic C%sT # Panama @@ -2203,7 +2421,7 @@ Zone America/Panama -5:18:08 - LMT 1890 # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan -4:00 - AST 1942 May 3 - -4:00 1:00 AWT 1945 Sep 30 2:00 + -4:00 US A%sT 1946 -4:00 - AST # St Kitts-Nevis @@ -2232,8 +2450,8 @@ Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown -4:00 - AST # Turks and Caicos -# From Paul Eggert (1998-08-06): -# Shanks says they use US DST rules, but IATA SSIM (1991/1998) +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998) # says they switch at midnight. Go with IATA SSIM. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule TC 1979 1986 - Apr lastSun 0:00 1:00 D diff --git a/timezone/private.h b/timezone/private.h index d9f232c8e3..2837b70c10 100644 --- a/timezone/private.h +++ b/timezone/private.h @@ -21,7 +21,7 @@ #ifndef lint #ifndef NOID -static char privatehid[] = "@(#)private.h 7.55"; +static char privatehid[] = "@(#)private.h 8.2"; #endif /* !defined NOID */ #endif /* !defined lint */ @@ -89,7 +89,7 @@ static char privatehid[] = "@(#)private.h 7.55"; #include "stdio.h" #include "errno.h" #include "string.h" -#include "limits.h" /* for CHAR_BIT */ +#include "limits.h" /* for CHAR_BIT et al. */ #include "time.h" #include "stdlib.h" @@ -125,20 +125,51 @@ static char privatehid[] = "@(#)private.h 7.55"; #define is_digit(c) ((unsigned)(c) - '0' <= 9) /* +** Define HAVE_STDINT_H's default value here, rather than at the +** start, since __GLIBC__'s value depends on previously-included +** files. +** (glibc 2.1 and later have stdint.h, even with pre-C99 compilers.) +*/ +#ifndef HAVE_STDINT_H +#define HAVE_STDINT_H \ + (199901 <= __STDC_VERSION__ || \ + 2 < (__GLIBC__ + (0 < __GLIBC_MINOR__))) +#endif /* !defined HAVE_STDINT_H */ + +#if HAVE_STDINT_H +#include "stdint.h" +#endif /* !HAVE_STDINT_H */ + +#ifndef INT_FAST64_MAX +/* Pre-C99 GCC compilers define __LONG_LONG_MAX__ instead of LLONG_MAX. */ +#if defined LLONG_MAX || defined __LONG_LONG_MAX__ +typedef long long int_fast64_t; +#else /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */ +#if (LONG_MAX >> 31) < 0xffffffff +Please use a compiler that supports a 64-bit integer type (or wider); +you may need to compile with "-DHAVE_STDINT_H". +#endif /* (LONG_MAX >> 31) < 0xffffffff */ +typedef long int_fast64_t; +#endif /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */ +#endif /* !defined INT_FAST64_MAX */ + +#ifndef INT32_MAX +#define INT32_MAX 0x7fffffff +#endif /* !defined INT32_MAX */ +#ifndef INT32_MIN +#define INT32_MIN (-1 - INT32_MAX) +#endif /* !defined INT32_MIN */ + +/* ** Workarounds for compilers/systems. */ /* -** SunOS 4.1.1 cc lacks prototypes. +** If your compiler lacks prototypes, "#define P(x) ()". */ #ifndef P -#ifdef __STDC__ #define P(x) x -#endif /* defined __STDC__ */ -#ifndef __STDC__ -#define P(x) () -#endif /* !defined __STDC__ */ #endif /* !defined P */ /* @@ -211,14 +242,14 @@ extern char * asctime_r(); ** Private function declarations. */ -char * icalloc P((int nelem, int elsize)); -char * icatalloc P((char * old, const char * new)); -char * icpyalloc P((const char * string)); -char * imalloc P((int n)); -void * irealloc P((void * pointer, int size)); -void icfree P((char * pointer)); -void ifree P((char * pointer)); -const char *scheck P((const char *string, const char *format)); +char * icalloc P((int nelem, int elsize)); +char * icatalloc P((char * old, const char * new)); +char * icpyalloc P((const char * string)); +char * imalloc P((int n)); +void * irealloc P((void * pointer, int size)); +void icfree P((char * pointer)); +void ifree P((char * pointer)); +const char * scheck P((const char * string, const char * format)); /* ** Finally, some convenience items. @@ -310,6 +341,26 @@ char *asctime_r P((struct tm const *, char *)); char *ctime_r P((time_t const *, char *)); #endif /* HAVE_INCOMPATIBLE_CTIME_R */ +#ifndef YEARSPERREPEAT +#define YEARSPERREPEAT 400 /* years before a Gregorian repeat */ +#endif /* !defined YEARSPERREPEAT */ + +/* +** The Gregorian year averages 365.2425 days, which is 31556952 seconds. +*/ + +#ifndef AVGSECSPERYEAR +#define AVGSECSPERYEAR 31556952L +#endif /* !defined AVGSECSPERYEAR */ + +#ifndef SECSPERREPEAT +#define SECSPERREPEAT ((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR) +#endif /* !defined SECSPERREPEAT */ + +#ifndef SECSPERREPEAT_BITS +#define SECSPERREPEAT_BITS 34 /* ceil(log2(SECSPERREPEAT)) */ +#endif /* !defined SECSPERREPEAT_BITS */ + /* ** UNIX was a registered trademark of The Open Group in 2003. */ diff --git a/timezone/scheck.c b/timezone/scheck.c index bc156379a0..74d9b07c14 100644 --- a/timezone/scheck.c +++ b/timezone/scheck.c @@ -1,6 +1,11 @@ +/* +** This file is in the public domain, so clarified as of +** 2006-07-17 by Arthur David Olson. +*/ + #ifndef lint #ifndef NOID -static char elsieid[] = "@(#)scheck.c 8.17"; +static char elsieid[] = "@(#)scheck.c 8.19"; #endif /* !defined lint */ #endif /* !defined NOID */ diff --git a/timezone/southamerica b/timezone/southamerica index 3a61cd717a..ca6c492f3e 100644 --- a/timezone/southamerica +++ b/timezone/southamerica @@ -1,14 +1,14 @@ -# @(#)southamerica 8.1 +# @(#)southamerica 8.6 # <pre> # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to # tz@elsie.nci.nih.gov for general use in the future). -# From Paul Eggert (1999-07-07): +# From Paul Eggert (2006-03-22): # A good source for time zone historical data outside the U.S. is -# Thomas G. Shanks, The International Atlas (5th edition), -# San Diego: ACS Publications, Inc. (1999). +# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition), +# San Diego: ACS Publications, Inc. (2003). # # Gwillim Law writes that a good source # for recent time zone data is the International Air Transport @@ -16,8 +16,8 @@ # published semiannually. Law sent in several helpful summaries # of the IATA's data after 1990. # -# Except where otherwise noted, Shanks is the source for entries through 1990, -# and IATA SSIM is the source for entries after 1990. +# Except where otherwise noted, Shanks & Pottenger is the source for +# entries through 1990, and IATA SSIM is the source for entries afterwards. # # Earlier editions of these tables used the North American style (e.g. ARST and # ARDT for Argentine Standard and Daylight Time), but the following quote @@ -92,8 +92,6 @@ Rule Arg 1988 only - Dec 1 0:00 1:00 S # obtaining the data from the: # Talleres de Hidrografia Naval Argentina # (Argentine Naval Hydrography Institute) -# -# Shanks stops after 1992-03-01; go with Otero. Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 - Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S # @@ -150,12 +148,12 @@ Rule Arg 2000 only - Mar Sun>=1 0:00 0 - # It's Law No. 7,210. This change is due to a public power emergency, so for # now we'll assume it's for this year only. # -# From Paul Eggert (2002-01-22): +# From Paul Eggert (2006-03-22): # <a href="http://www.spicasc.net/horvera.html"> -# Hora de verano para la Republica Argentina (2000-10-01) +# Hora de verano para la Republica Argentina (2003-06-08) # </a> says that standard time in Argentina from 1894-10-31 # to 1920-05-01 was -4:16:48.25. Go with this more-precise value -# over Shanks. +# over Shanks & Pottenger. # # From Mariano Absatz (2004-06-05): # These media articles from a major newspaper mostly cover the current state: @@ -202,8 +200,8 @@ Rule Arg 2000 only - Mar Sun>=1 0:00 0 - # http://www.sanjuan.gov.ar/prensa/archivo/000426.html # http://www.sanjuan.gov.ar/prensa/archivo/000441.html -# Unless otherwise specified, data are from Shanks through 1992, from -# the IATA otherwise. As noted below, Shanks says that +# Unless otherwise specified, data are from Shanks & Pottenger through 1992, +# from the IATA otherwise. As noted below, Shanks & Pottenger say that # America/Cordoba split into 6 subregions during 1991/1992, but we # haven't verified this yet so for now we'll keep it a single region. # @@ -222,7 +220,7 @@ Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 # Formosa (FM), Salta (SA), Santiago del Estero (SE), Cordoba (CB), # San Luis (SL), La Pampa (LP), Neuquen (NQ), Rio Negro (RN) # -# Shanks also makes the following claims, which we haven't verified: +# Shanks & Pottenger also make the following claims, which we haven't verified: # - Formosa switched to -3:00 on 1991-01-07. # - Misiones switched to -3:00 on 1990-12-29. # - Chaco switched to -3:00 on 1991-01-04. @@ -430,11 +428,7 @@ Zone America/La_Paz -4:32:36 - LMT 1890 # The official decrees referenced below are mostly taken from # <a href="http://pcdsh01.on.br/DecHV.html"> # Decretos sobre o Horario de Verao no Brasil -# </a> (2001-09-20, in Portuguese). -# The official site for all decrees, including those not related to time, is -# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/principal_ano.htm"> -# Presidencia da Republica, Subchefia para Assuntos Juridicos, Decretos -# </a> (in Portuguese). +# </a>. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S # Decree <a href="http://pcdsh01.on.br/HV20466.htm">20,466</a> (1931-10-01) @@ -550,7 +544,7 @@ Rule Brazil 2000 only - Feb 27 0:00 0 - # Decree <a href="http://pcdsh01.on.br/figuras/HV3916.gif">3,916</a> # (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE. Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 S -Rule Brazil 2001 max - Feb Sun>=15 0:00 0 - +Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 - # Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE. # <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2002/D4399.htm"></a> Rule Brazil 2002 only - Nov 3 0:00 1:00 S @@ -562,10 +556,14 @@ Rule Brazil 2003 only - Oct 19 0:00 1:00 S Rule Brazil 2004 only - Nov 2 0:00 1:00 S # Decree <a href="http://pcdsh01.on.br/DecHV5539.gif">5,539</a> (2005-09-19), # adopted by the same states as before. -Rule Brazil 2005 max - Oct Sun>=15 0:00 1:00 S +Rule Brazil 2005 only - Oct 16 0:00 1:00 S +# Decree <a href="http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2006/Decreto/D5920.htm">5,920</a> +# (2006-10-03), adopted by the same states as before. +Rule Brazil 2006 max - Nov Sun>=1 0:00 1:00 S +Rule Brazil 2007 max - Feb lastSun 0:00 0 - # The latest ruleset listed above says that the following states observe DST: # DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP. -# For dates after mid-2006, the above rules with TO="max" are guesses +# For dates after mid-2007, the above rules with TO="max" are guesses # and are quite possibly wrong, but are more likely than no DST at all. @@ -706,53 +704,64 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914 # Because of the same drought, the government decided to end DST later, # on April 3, (one-time change). -# From Gwillim Law (2001-05-04): -# I came across another article in "La Tercera" about Chilean DST. -# <http://www.tercera.cl/diario/2000/10/13/t-extras.html> -# It clearly confirms my earlier suggestion, that DST begins at 22:00 -# on Easter Island.... But it also seems to be saying that the -# observance of DST in Chile began in 1966, rather than 1969 as -# ... [Shanks] has it.... -# -# My translation: -# -# "The Chilean Army has announced that summer time will begin tomorrow, -# Saturday, October 14 in continental Chile, insular Chile, and -# Antarctica, as provided by Supreme Decree 25 of January 11, 1966. -# By the preceding, official time in continental Chile and Chilean -# Antarctic, and official time in Western Insular Chile, which applies -# to Easter Island and Sala y Gomez Island, will be set forward at -# midnight and at 22:00, respectively, by 20 minutes." +# From Oscar van Vlijmen (2006-10-08): +# http://www.horaoficial.cl/cambio.htm -# From Paul Eggert (2001-05-04): -# Go with this article in preference to Shanks's 1969 date for modern DST. -# Assume this rule has been used since DST was introduced in the islands. +# From Jesper Norgaard Welen (2006-10-08): +# I think that there are some obvious mistakes in the suggested link +# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4 +# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15 +# (they should have been 1990-09-15 and 1990-09-16 respectively), but +# anyhow it clears up some doubts too. -# From Paul Eggert (2002-10-24): -# <http://www.shoa.cl/shoa/faqhoraoficial.htm> gives many details that -# disagree with the following table, but we haven't had time to compare them. +# The following data are from <http://www.horaoficial.cl/horaof.htm> +# (2006-09-20), transcribed by Jesper Norgaard Welen. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Chile 1918 only - Sep 1 0:00 1:00 S -Rule Chile 1919 only - Jul 2 0:00 0 - -Rule Chile 1927 1931 - Sep 1 0:00 1:00 S +Rule Chile 1927 1932 - Sep 1 0:00 1:00 S Rule Chile 1928 1932 - Apr 1 0:00 0 - -Rule Chile 1966 1997 - Oct Sun>=9 4:00u 1:00 S -Rule Chile 1967 1998 - Mar Sun>=9 3:00u 0 - +Rule Chile 1942 only - Jun 1 4:00u 0 - +Rule Chile 1942 only - Aug 1 5:00u 1:00 S +Rule Chile 1946 only - Jul 15 4:00u 1:00 S +Rule Chile 1946 only - Sep 1 3:00u 0:00 - +Rule Chile 1947 only - Apr 1 4:00u 0 - +Rule Chile 1968 only - Nov 3 4:00u 1:00 S +Rule Chile 1969 only - Mar 30 3:00u 0 - +Rule Chile 1969 only - Nov 23 4:00u 1:00 S +Rule Chile 1970 only - Mar 29 3:00u 0 - +Rule Chile 1971 only - Mar 14 3:00u 0 - +Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 - +Rule Chile 1973 only - Sep 30 4:00u 1:00 S +Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1987 only - Apr 12 3:00u 0 - +Rule Chile 1988 1989 - Mar Sun>=9 3:00u 0 - +Rule Chile 1988 only - Oct Sun>=1 4:00u 1:00 S +Rule Chile 1989 only - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1990 only - Mar 18 3:00u 0 - +Rule Chile 1990 only - Sep 16 4:00u 1:00 S +Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 - +Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1997 only - Mar 30 3:00u 0 - +Rule Chile 1998 only - Mar Sun>=9 3:00u 0 - Rule Chile 1998 only - Sep 27 4:00u 1:00 S Rule Chile 1999 only - Apr 4 3:00u 0 - Rule Chile 1999 max - Oct Sun>=9 4:00u 1:00 S Rule Chile 2000 max - Mar Sun>=9 3:00u 0 - -# IATA SSIM anomalies: (1990-09) says 1990-09-16; (1992-02) says 1992-03-14; +# IATA SSIM anomalies: (1992-02) says 1992-03-14; # (1996-09) says 1998-03-08. Ignore these. # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone America/Santiago -4:42:40 - LMT 1890 - -4:42:40 - SMT 1910 # Santiago Mean Time - -5:00 Chile CL%sT 1932 Sep # Chile Time +Zone America/Santiago -4:42:46 - LMT 1890 + -4:42:46 - SMT 1910 # Santiago Mean Time + -5:00 - CLT 1916 Jul 1 # Chile Time + -4:42:46 - SMT 1918 Sep 1 # Santiago Mean Time + -4:00 - CLT 1919 Jul 1 # Chile Time + -4:42:46 - SMT 1927 Sep 1 # Santiago Mean Time + -5:00 Chile CL%sT 1947 May 22 # Chile Time -4:00 Chile CL%sT Zone Pacific/Easter -7:17:28 - LMT 1890 # Mataveri -7:17:28 - MMT 1932 Sep # Mataveri Mean Time - -7:00 Chile EAS%sT 1982 Mar 14 # Easter I Time + -7:00 Chile EAS%sT 1982 Jan 18 21:00 # Easter I Time -6:00 Chile EAS%sT # # Sala y Gomez Island is like Pacific/Easter. @@ -760,11 +769,9 @@ Zone Pacific/Easter -7:17:28 - LMT 1890 # Mataveri # San Felix, and Antarctic bases, are like America/Santiago. # Colombia -# Shanks specifies 24:00 for 1992 transition times; go with IATA, -# as it seems implausible to change clocks at midnight New Year's Eve. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule CO 1992 only - May 2 0:00 1:00 S -Rule CO 1992 only - Dec 31 0:00 0 - +Rule CO 1992 only - May 3 0:00 1:00 S +Rule CO 1993 only - Apr 4 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Bogota -4:56:20 - LMT 1884 Mar 13 -4:56:20 - BMT 1914 Nov 23 # Bogota Mean Time @@ -773,10 +780,21 @@ Zone America/Bogota -4:56:20 - LMT 1884 Mar 13 # no information; probably like America/Bogota # Curacao -# Shanks says that Bottom and Oranjestad have been at -4:00 since -# standard time was introduced on 1912-03-02; and that Kralendijk and Rincon -# used Kralendijk Mean Time (-4:33:08) from 1912-02-02 to 1965-01-01. -# This all predates our 1970 cutoff, though. +# +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger say that The Bottom and Philipsburg have been at +# -4:00 since standard time was introduced on 1912-03-02; and that +# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from +# 1912-02-02 to 1965-01-01. The former is dubious, since S&P also say +# Saba Island has been like Curacao. +# This all predates our 1970 cutoff, though. +# +# By July 2007 Curacao and St Maarten are planned to become +# associated states within the Netherlands, much like Aruba; +# Bonaire, Saba and St Eustatius would become directly part of the +# Netherlands as Kingdom Islands. This won't affect their time zones +# though, as far as we know. +# # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Curacao -4:35:44 - LMT 1912 Feb 12 # Willemstad -4:30 - ANT 1965 # Netherlands Antilles Time @@ -793,9 +811,9 @@ Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno # Falklands -# From Paul Eggert (2001-03-05): -# Between 1990 and 2000 inclusive, Shanks and the IATA agree except -# the IATA gives 1996-09-08. Go with Shanks. +# From Paul Eggert (2006-03-22): +# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except +# the IATA gives 1996-09-08. Go with Shanks & Pottenger. # From Falkland Islands Government Office, London (2001-01-22) # via Jesper Norgaard: @@ -878,9 +896,9 @@ Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown -4:00 - GYT # Paraguay -# From Paul Eggert (1999-10-29): -# Shanks (1999) says that spring transitions are from 01:00 -> 02:00, -# and autumn transitions are from 00:00 -> 23:00. Go with earlier +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00, +# and autumn transitions are from 00:00 -> 23:00. Go with pre-1999 # editions of Shanks, and with the IATA, who say transitions occur at 00:00. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Para 1975 1988 - Oct 1 0:00 1:00 S @@ -911,13 +929,10 @@ Rule Para 1996 only - Mar 1 0:00 0 - # year, the time will change on the first Sunday of October; likewise, the # clock will be set back on the first Sunday of March. # -# From Jesper Norgaard (2001-03-06) [an official URL saying similar things]: -# http://gateway.abc.com.py:8000/pub/pag04.mbr/artic?FHA=2001-03-03-02.24.52.900592 -# Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S -# IATA SSIM (1997-09) says Mar 1; go with Shanks. +# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger. Rule Para 1997 only - Feb lastSun 0:00 0 - -# Shanks says 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but +# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but # (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27). Rule Para 1998 2001 - Mar Sun>=1 0:00 0 - # From Rives McDow (2002-02-28): @@ -931,7 +946,9 @@ Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S # There are several sources that claim that Paraguay made # a timezone rule change in autumn 2004. # From Steffen Thorsen (2005-01-05): -# Decree 1,867 (2004-03-05) <http://www.labor.com.py/noticias.asp?id=27> +# Decree 1,867 (2004-03-05) +# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13) +# <http://www.presidencia.gov.py/decretos/D1867.pdf> Rule Para 2004 max - Oct Sun>=15 0:00 1:00 S Rule Para 2005 max - Mar Sun>=8 0:00 0 - @@ -949,8 +966,8 @@ Zone America/Asuncion -3:50:40 - LMT 1890 # When we were in Peru in 1985-1986, they apparently switched over # sometime between December 29 and January 3 while we were on the Amazon. # -# From Paul Eggert (2003-11-02): -# Shanks doesn't have this transition. Assume 1986 was like 1987. +# From Paul Eggert (2006-03-22): +# Shanks & Pottenger don't have this transition. Assume 1986 was like 1987. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Peru 1938 only - Jan 1 0:00 1:00 S @@ -961,7 +978,7 @@ Rule Peru 1986 1987 - Jan 1 0:00 1:00 S Rule Peru 1986 1987 - Apr 1 0:00 0 - Rule Peru 1990 only - Jan 1 0:00 1:00 S Rule Peru 1990 only - Apr 1 0:00 0 - -# IATA is ambiguous for 1993/1995; go with Shanks. +# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger. Rule Peru 1994 only - Jan 1 0:00 1:00 S Rule Peru 1994 only - Apr 1 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -994,23 +1011,23 @@ Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2 # Uruguay # From Paul Eggert (1993-11-18): # Uruguay wins the prize for the strangest peacetime manipulation of the rules. -# From Shanks: +# From Shanks & Pottenger: # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -# Whitman gives 1923 Oct 1; go with Shanks. +# Whitman gives 1923 Oct 1; go with Shanks & Pottenger. Rule Uruguay 1923 only - Oct 2 0:00 0:30 HS Rule Uruguay 1924 1926 - Apr 1 0:00 0 - Rule Uruguay 1924 1925 - Oct 1 0:00 0:30 HS Rule Uruguay 1933 1935 - Oct lastSun 0:00 0:30 HS -# Shanks gives 1935 Apr 1 0:00 and 1936 Mar 30 0:00; go with Whitman. +# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman. Rule Uruguay 1934 1936 - Mar Sat>=25 23:30s 0 - Rule Uruguay 1936 only - Nov 1 0:00 0:30 HS Rule Uruguay 1937 1941 - Mar lastSun 0:00 0 - -# Whitman gives 1937 Oct 3; go with Shanks. +# Whitman gives 1937 Oct 3; go with Shanks & Pottenger. Rule Uruguay 1937 1940 - Oct lastSun 0:00 0:30 HS # Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13, -# and 1943 Apr 13 ``to present time''; go with Shanks. -Rule Uruguay 1941 only - Aug 1 0:00 0 - -Rule Uruguay 1942 only - Jan 1 0:00 0:30 HS +# and 1943 Apr 13 ``to present time''; go with Shanks & Pottenger. +Rule Uruguay 1941 only - Aug 1 0:00 0:30 HS +Rule Uruguay 1942 only - Jan 1 0:00 0 - Rule Uruguay 1942 only - Dec 14 0:00 1:00 S Rule Uruguay 1943 only - Mar 14 0:00 0 - Rule Uruguay 1959 only - May 24 0:00 1:00 S @@ -1036,7 +1053,7 @@ Rule Uruguay 1988 only - Mar 14 0:00 0 - Rule Uruguay 1988 only - Dec 11 0:00 1:00 S Rule Uruguay 1989 only - Mar 12 0:00 0 - Rule Uruguay 1989 only - Oct 29 0:00 1:00 S -# Shanks says no DST was observed in 1990/1 and 1991/2, +# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2, # and that 1992/3's DST was from 10-25 to 03-01. Go with IATA. Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 - Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S @@ -1057,6 +1074,10 @@ Rule Uruguay 2005 only - Mar 27 2:00 0 - # 02:00 local time, official time in Uruguay will be at GMT -2. Rule Uruguay 2005 only - Oct 9 2:00 1:00 S Rule Uruguay 2006 only - Mar 12 2:00 0 - +# From Jesper Norgaard Welen (2006-09-06): +# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF +Rule Uruguay 2006 max - Oct Sun>=1 2:00 1:00 S +Rule Uruguay 2007 max - Mar Sun>=8 2:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 -3:44:44 - MMT 1920 May 1 # Montevideo MT diff --git a/timezone/tzfile.h b/timezone/tzfile.h index fb6ca9880f..3a9eee305a 100644 --- a/timezone/tzfile.h +++ b/timezone/tzfile.h @@ -21,7 +21,7 @@ #ifndef lint #ifndef NOID -static char tzfilehid[] = "@(#)tzfile.h 7.18"; +static char tzfilehid[] = "@(#)tzfile.h 8.1"; #endif /* !defined NOID */ #endif /* !defined lint */ @@ -49,7 +49,8 @@ static char tzfilehid[] = "@(#)tzfile.h 7.18"; struct tzhead { char tzh_magic[4]; /* TZ_MAGIC */ - char tzh_reserved[16]; /* reserved for future use */ + char tzh_version[1]; /* '\0' or '2' as of 2005 */ + char tzh_reserved[15]; /* reserved--must be zero */ char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ char tzh_leapcnt[4]; /* coded number of leap seconds */ @@ -84,18 +85,22 @@ struct tzhead { */ /* +** If tzh_version is '2' or greater, the above is followed by a second instance +** of tzhead and a second instance of the data in which each coded transition +** time uses 8 rather than 4 chars, +** then a POSIX-TZ-environment-variable-style string for use in handling +** instants after the last transition time stored in the file +** (with nothing between the newlines if there is no POSIX representation for +** such instants). +*/ + +/* ** In the current implementation, "tzset()" refuses to deal with files that ** exceed any of the limits below. */ #ifndef TZ_MAX_TIMES -/* -** The TZ_MAX_TIMES value below is enough to handle a bit more than a -** year's worth of solar time (corrected daily to the nearest second) or -** 138 years of Pacific Presidential Election time -** (where there are three time zone transitions every fourth year). -*/ -#define TZ_MAX_TIMES 370 +#define TZ_MAX_TIMES 1200 #endif /* !defined TZ_MAX_TIMES */ #ifndef TZ_MAX_TYPES diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh index f6e28bfdab..b99af8273b 100644 --- a/timezone/tzselect.ksh +++ b/timezone/tzselect.ksh @@ -1,6 +1,6 @@ #! @KSH@ -# '@(#)tzselect.ksh 1.8' +# '@(#)tzselect.ksh 8.1' # Ask the user about the time zone, and output the resulting TZ value to stdout. # Interact with the user via stderr and stdin. diff --git a/timezone/zdump.c b/timezone/zdump.c index d525da1bae..ae4d286b12 100644 --- a/timezone/zdump.c +++ b/timezone/zdump.c @@ -1,4 +1,4 @@ -static char elsieid[] = "@(#)zdump.c 7.74"; +static char elsieid[] = "@(#)zdump.c 8.2"; /* ** This code has been made independent of the rest of the time @@ -15,7 +15,7 @@ static char elsieid[] = "@(#)zdump.c 7.74"; #include "ctype.h" /* for isalpha et al. */ #ifndef isascii #define isascii(x) 1 -#endif +#endif /* !defined isascii */ #ifndef ZDUMP_LO_YEAR #define ZDUMP_LO_YEAR (-500) @@ -130,11 +130,7 @@ static char elsieid[] = "@(#)zdump.c 7.74"; #endif /* !defined TZ_DOMAIN */ #ifndef P -#ifdef __STDC__ #define P(x) x -#else /* !defined __STDC__ */ -#define P(x) () -#endif /* !defined __STDC__ */ #endif /* !defined P */ extern char ** environ; @@ -418,14 +414,21 @@ _("%s: use of -v on system with floating time_t other than float or double\n"), } } else if (0 > (time_t) -1) { /* - ** time_t is signed. + ** time_t is signed. Assume overflow wraps around. */ - register time_t hibit; + time_t t = 0; + time_t t1 = 1; - for (hibit = 1; (hibit * 2) != 0; hibit *= 2) - continue; - absolute_min_time = hibit; - absolute_max_time = -(hibit + 1); + while (t < t1) { + t = t1; + t1 = 2 * t1 + 1; + } + + absolute_max_time = t; + t = -t; + absolute_min_time = t - 1; + if (t < absolute_min_time) + absolute_min_time = t; } else { /* ** time_t is unsigned. @@ -468,10 +471,7 @@ const long y; } static time_t -hunt(name, lot, hit) -char * name; -time_t lot; -time_t hit; +hunt(char *name, time_t lot, time_t hit) { time_t t; long diff; @@ -541,10 +541,7 @@ struct tm * oldp; } static void -show(zone, t, v) -char * zone; -time_t t; -int v; +show(char *zone, time_t t, int v) { register struct tm * tmp; diff --git a/timezone/zic.c b/timezone/zic.c index acb76fb3ba..f7393ea7ba 100644 --- a/timezone/zic.c +++ b/timezone/zic.c @@ -1,15 +1,18 @@ -static char elsieid[] = "@(#)zic.c 7.128"; - /* -** Regardless of the type of time_t, we do our work using this type. +** This file is in the public domain, so clarified as of +** 2006-07-17 by Arthur David Olson. */ -typedef int zic_t; +static char elsieid[] = "@(#)zic.c 8.7"; #include "private.h" #include "locale.h" #include "tzfile.h" +#define ZIC_VERSION '2' + +typedef int_fast64_t zic_t; + #ifndef ZIC_MAX_ABBR_LEN_WO_WARN #define ZIC_MAX_ABBR_LEN_WO_WARN 6 #endif /* !defined ZIC_MAX_ABBR_LEN_WO_WARN */ @@ -36,6 +39,11 @@ typedef int zic_t; #define isascii(x) 1 #endif +#define OFFSET_STRLEN_MAXIMUM (7 + INT_STRLEN_MAXIMUM(long)) +#define RULE_STRLEN_MAXIMUM 8 /* "Mdd.dd.d" */ + +#define end(cp) (strchr((cp), '\0')) + struct rule { const char * r_filename; int r_linenum; @@ -44,6 +52,8 @@ struct rule { int r_loyear; /* for example, 1986 */ int r_hiyear; /* for example, 1986 */ const char * r_yrtype; + int r_lowasnum; + int r_hiwasnum; int r_month; /* 0..11 */ @@ -103,9 +113,10 @@ static void adjleap P((void)); static void associate P((void)); static int ciequal P((const char * ap, const char * bp)); static void convert P((long val, char * buf)); +static void convert64 P((zic_t val, char * buf)); static void dolink P((const char * fromfile, const char * tofile)); static void doabbr P((char * abbr, const char * format, - const char * letters, int isdst)); + const char * letters, int isdst, int doquotes)); static void eat P((const char * name, int num)); static void eats P((const char * name, int num, const char * rname, int rnum)); @@ -121,6 +132,7 @@ static void inrule P((char ** fields, int nfields)); static int inzcont P((char ** fields, int nfields)); static int inzone P((char ** fields, int nfields)); static int inzsub P((char ** fields, int nfields, int iscont)); +static int is32 P((zic_t x)); static int itsabbr P((const char * abbr, const char * word)); static int itsdir P((const char * name)); static int lowerit P((int c)); @@ -130,16 +142,22 @@ static void newabbr P((const char * abbr)); static long oadd P((long t1, long t2)); static void outzone P((const struct zone * zp, int ntzones)); static void puttzcode P((long code, FILE * fp)); +static void puttzcode64 P((zic_t code, FILE * fp)); static int rcomp P((const void * leftp, const void * rightp)); static zic_t rpytime P((const struct rule * rp, int wantedy)); static void rulesub P((struct rule * rp, const char * loyearp, const char * hiyearp, const char * typep, const char * monthp, const char * dayp, const char * timep)); +static int stringoffset P((char * result, long offset)); +static int stringrule P((char * result, const struct rule * rp, + long dstoff, long gmtoff)); +static void stringzone P((char * result, + const struct zone * zp, int ntzones)); static void setboundaries P((void)); static zic_t tadd P((zic_t t1, long t2)); static void usage P((void)); -static void writezone P((const char * name)); +static void writezone P((const char * name, const char * string)); static int yearistype P((int year, const char * type)); #if !HAVE_STRERROR @@ -150,13 +168,16 @@ static int charcnt; static int errors; static const char * filename; static int leapcnt; +static int leapseen; +static int leapminyear; +static int leapmaxyear; static int linenum; +static int max_abbrvar_len; +static int max_format_len; static zic_t max_time; static int max_year; -static int max_year_representable; static zic_t min_time; static int min_year; -static int min_year_representable; static int noise; static const char * rfilename; static int rlinenum; @@ -453,7 +474,7 @@ static void usage P((void)) { (void) fprintf(stderr, _("%s: usage is %s \ -[ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\ +[ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\ \t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"), progname, progname); exit(EXIT_FAILURE); @@ -464,7 +485,6 @@ static const char * lcltime; static const char * directory; static const char * leapsec; static const char * yitcommand; -static int sflag = FALSE; int main(argc, argv) @@ -486,6 +506,11 @@ char * argv[]; (void) textdomain(TZ_DOMAIN); #endif /* HAVE_GETTEXT */ progname = argv[0]; + if (TYPE_BIT(zic_t) < 64) { + (void) fprintf(stderr, "%s: %s\n", progname, + _("wild compilation-time specification of zic_t")); + exit(EXIT_FAILURE); + } for (i = 1; i < argc; ++i) if (strcmp(argv[i], "--version") == 0) { (void) printf("%s\n", elsieid); @@ -549,7 +574,7 @@ _("%s: More than one -L option specified\n"), noise = TRUE; break; case 's': - sflag = TRUE; + (void) printf("%s: -s ignored\n", progname); break; } if (optind == argc - 1 && strcmp(argv[optind], "=") == 0) @@ -671,54 +696,17 @@ warning(_("hard link failed, symbolic link used")); ifree(toname); } -#ifndef INT_MAX -#define INT_MAX ((int) (((unsigned)~0)>>1)) -#endif /* !defined INT_MAX */ - -#ifndef INT_MIN -#define INT_MIN ((int) ~(((unsigned)~0)>>1)) -#endif /* !defined INT_MIN */ - -/* -** The tz file format currently allows at most 32-bit quantities. -** This restriction should be removed before signed 32-bit values -** wrap around in 2038, but unfortunately this will require a -** change to the tz file format. -*/ - -#define MAX_BITS_IN_FILE 32 -#define TIME_T_BITS_IN_FILE ((TYPE_BIT(zic_t) < MAX_BITS_IN_FILE) ? \ - TYPE_BIT(zic_t) : MAX_BITS_IN_FILE) +#define TIME_T_BITS_IN_FILE 64 static void setboundaries P((void)) { register int i; - if (TYPE_SIGNED(zic_t)) { - min_time = -1; - for (i = 0; i < TIME_T_BITS_IN_FILE - 1; ++i) - min_time *= 2; - max_time = -(min_time + 1); - if (sflag) - min_time = 0; - } else { - min_time = 0; - max_time = 2 - sflag; - for (i = 0; i < TIME_T_BITS_IN_FILE - 1; ++i) - max_time *= 2; - --max_time; - } - { - time_t t; - - t = (time_t) min_time; - min_year = TM_YEAR_BASE + gmtime(&t)->tm_year; - t = (time_t) max_time; - max_year = TM_YEAR_BASE + gmtime(&t)->tm_year; - } - min_year_representable = min_year; - max_year_representable = max_year; + min_time = -1; + for (i = 0; i < TIME_T_BITS_IN_FILE - 1; ++i) + min_time *= 2; + max_time = -(min_time + 1); } static int @@ -993,6 +981,8 @@ const int nfields; fields[RF_MONTH], fields[RF_DAY], fields[RF_TOD]); r.r_name = ecpyalloc(fields[RF_NAME]); r.r_abbrvar = ecpyalloc(fields[RF_ABBRVAR]); + if (max_abbrvar_len < strlen(r.r_abbrvar)) + max_abbrvar_len = strlen(r.r_abbrvar); rules = (struct rule *) (void *) erealloc((char *) rules, (int) ((nrules + 1) * sizeof *rules)); rules[nrules++] = r; @@ -1098,6 +1088,8 @@ const int iscont; } z.z_rule = ecpyalloc(fields[i_rule]); z.z_format = ecpyalloc(fields[i_format]); + if (max_format_len < strlen(z.z_format)) + max_format_len = strlen(z.z_format); hasuntil = nfields > i_untilyear; if (hasuntil) { z.z_untilrule.r_filename = filename; @@ -1159,6 +1151,11 @@ const int nfields; error(_("invalid leaping year")); return; } + if (!leapseen || leapmaxyear < year) + leapmaxyear = year; + if (!leapseen || leapminyear > year) + leapminyear = year; + leapseen = TRUE; j = EPOCH_YEAR; while (j != year) { if (year > j) { @@ -1313,7 +1310,8 @@ const char * const timep; */ cp = loyearp; lp = byword(cp, begin_years); - if (lp != NULL) switch ((int) lp->l_value) { + rp->r_lowasnum = lp == NULL; + if (!rp->r_lowasnum) switch ((int) lp->l_value) { case YR_MINIMUM: rp->r_loyear = INT_MIN; break; @@ -1328,14 +1326,11 @@ const char * const timep; } else if (sscanf(cp, scheck(cp, "%d"), &rp->r_loyear) != 1) { error(_("invalid starting year")); return; - } else if (noise) { - if (rp->r_loyear < min_year_representable) - warning(_("starting year too low to be represented")); - else if (rp->r_loyear > max_year_representable) - warning(_("starting year too high to be represented")); } cp = hiyearp; - if ((lp = byword(cp, end_years)) != NULL) switch ((int) lp->l_value) { + lp = byword(cp, end_years); + rp->r_hiwasnum = lp == NULL; + if (!rp->r_hiwasnum) switch ((int) lp->l_value) { case YR_MINIMUM: rp->r_hiyear = INT_MIN; break; @@ -1353,11 +1348,6 @@ const char * const timep; } else if (sscanf(cp, scheck(cp, "%d"), &rp->r_hiyear) != 1) { error(_("invalid ending year")); return; - } else if (noise) { - if (rp->r_loyear < min_year_representable) - warning(_("ending year too low to be represented")); - else if (rp->r_loyear > max_year_representable) - warning(_("ending year too high to be represented")); } if (rp->r_loyear > rp->r_hiyear) { error(_("starting year greater than ending year")); @@ -1372,8 +1362,6 @@ const char * const timep; } rp->r_yrtype = ecpyalloc(typep); } - if (rp->r_loyear < min_year && rp->r_loyear > 0) - min_year = rp->r_loyear; /* ** Day work. ** Accept things such as: @@ -1427,13 +1415,25 @@ const long val; char * const buf; { register int i; - register long shift; + register int shift; for (i = 0, shift = 24; i < 4; ++i, shift -= 8) buf[i] = val >> shift; } static void +convert64(val, buf) +const zic_t val; +char * const buf; +{ + register int i; + register int shift; + + for (i = 0, shift = 56; i < 8; ++i, shift -= 8) + buf[i] = val >> shift; +} + +static void puttzcode(val, fp) const long val; FILE * const fp; @@ -1444,28 +1444,50 @@ FILE * const fp; (void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp); } +static void +puttzcode64(val, fp) +const zic_t val; +FILE * const fp; +{ + char buf[8]; + + convert64(val, buf); + (void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp); +} + static int atcomp(avp, bvp) -void * avp; -void * bvp; +const void * avp; +const void * bvp; { - if (((struct attype *) avp)->at < ((struct attype *) bvp)->at) - return -1; - else if (((struct attype *) avp)->at > ((struct attype *) bvp)->at) - return 1; - else return 0; + const zic_t a = ((const struct attype *) avp)->at; + const zic_t b = ((const struct attype *) bvp)->at; + + return (a < b) ? -1 : (a > b); +} + +static int +is32(x) +const zic_t x; +{ + return INT32_MIN <= x && x <= INT32_MAX; } static void -writezone(name) +writezone(name, string) const char * const name; +const char * const string; { - register FILE * fp; - register int i, j; - static char * fullname; - static struct tzhead tzh; - zic_t ats[TZ_MAX_TIMES]; - unsigned char types[TZ_MAX_TIMES]; + register FILE * fp; + register int i, j; + register int leapcnt32, leapi32; + register int timecnt32, timei32; + register int pass; + static char * fullname; + static const struct tzhead tzh0; + static struct tzhead tzh; + zic_t ats[TZ_MAX_TIMES]; + unsigned char types[TZ_MAX_TIMES]; /* ** Sort. @@ -1509,6 +1531,36 @@ const char * const name; ats[i] = attypes[i].at; types[i] = attypes[i].type; } + /* + ** Correct for leap seconds. + */ + for (i = 0; i < timecnt; ++i) { + j = leapcnt; + while (--j >= 0) + if (ats[i] > trans[j] - corr[j]) { + ats[i] = tadd(ats[i], corr[j]); + break; + } + } + /* + ** Figure out 32-bit-limited starts and counts. + */ + timecnt32 = timecnt; + timei32 = 0; + leapcnt32 = leapcnt; + leapi32 = 0; + while (timecnt32 > 0 && !is32(ats[timecnt32 - 1])) + --timecnt32; + while (timecnt32 > 0 && !is32(ats[timei32])) { + --timecnt32; + ++timei32; + } + while (leapcnt32 > 0 && !is32(trans[leapcnt32 - 1])) + --leapcnt32; + while (leapcnt32 > 0 && !is32(trans[leapi32])) { + --leapcnt32; + ++leapi32; + } fullname = erealloc(fullname, (int) (strlen(directory) + 1 + strlen(name) + 1)); (void) sprintf(fullname, "%s/%s", directory, name); @@ -1533,67 +1585,150 @@ const char * const name; exit(EXIT_FAILURE); } } - convert(eitol(typecnt), tzh.tzh_ttisgmtcnt); - convert(eitol(typecnt), tzh.tzh_ttisstdcnt); - convert(eitol(leapcnt), tzh.tzh_leapcnt); - convert(eitol(timecnt), tzh.tzh_timecnt); - convert(eitol(typecnt), tzh.tzh_typecnt); - convert(eitol(charcnt), tzh.tzh_charcnt); - (void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic); + for (pass = 1; pass <= 2; ++pass) { + register int thistimei, thistimecnt; + register int thisleapi, thisleapcnt; + register int thistimelim, thisleaplim; + int writetype[TZ_MAX_TIMES]; + int typemap[TZ_MAX_TYPES]; + register int thistypecnt; + char thischars[TZ_MAX_CHARS]; + char thischarcnt; + int indmap[TZ_MAX_CHARS]; + + if (pass == 1) { + thistimei = timei32; + thistimecnt = timecnt32; + thisleapi = leapi32; + thisleapcnt = leapcnt32; + } else { + thistimei = 0; + thistimecnt = timecnt; + thisleapi = 0; + thisleapcnt = leapcnt; + } + thistimelim = thistimei + thistimecnt; + thisleaplim = thisleapi + thisleapcnt; + for (i = 0; i < typecnt; ++i) + writetype[i] = thistimecnt == timecnt; + if (thistimecnt == 0) { + /* + ** No transition times fall in the current + ** (32- or 64-bit) window. + */ + if (typecnt != 0) + writetype[typecnt - 1] = TRUE; + } else { + for (i = thistimei - 1; i < thistimelim; ++i) + if (i >= 0) + writetype[types[i]] = TRUE; + /* + ** For America/Godthab and Antarctica/Palmer + */ + if (thistimei == 0) + writetype[0] = TRUE; + } + thistypecnt = 0; + for (i = 0; i < typecnt; ++i) + typemap[i] = writetype[i] ? thistypecnt++ : -1; + for (i = 0; i < sizeof indmap / sizeof indmap[0]; ++i) + indmap[i] = -1; + thischarcnt = 0; + for (i = 0; i < typecnt; ++i) { + register char * thisabbr; + + if (!writetype[i]) + continue; + if (indmap[abbrinds[i]] >= 0) + continue; + thisabbr = &chars[abbrinds[i]]; + for (j = 0; j < thischarcnt; ++j) + if (strcmp(&thischars[j], thisabbr) == 0) + break; + if (j == thischarcnt) { + (void) strcpy(&thischars[(int) thischarcnt], + thisabbr); + thischarcnt += strlen(thisabbr) + 1; + } + indmap[abbrinds[i]] = j; + } #define DO(field) (void) fwrite((void *) tzh.field, \ (size_t) sizeof tzh.field, (size_t) 1, fp) - DO(tzh_magic); - DO(tzh_reserved); - DO(tzh_ttisgmtcnt); - DO(tzh_ttisstdcnt); - DO(tzh_leapcnt); - DO(tzh_timecnt); - DO(tzh_typecnt); - DO(tzh_charcnt); + tzh = tzh0; + (void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic); + tzh.tzh_version[0] = ZIC_VERSION; + convert(eitol(thistypecnt), tzh.tzh_ttisgmtcnt); + convert(eitol(thistypecnt), tzh.tzh_ttisstdcnt); + convert(eitol(thisleapcnt), tzh.tzh_leapcnt); + convert(eitol(thistimecnt), tzh.tzh_timecnt); + convert(eitol(thistypecnt), tzh.tzh_typecnt); + convert(eitol(thischarcnt), tzh.tzh_charcnt); + DO(tzh_magic); + DO(tzh_version); + DO(tzh_reserved); + DO(tzh_ttisgmtcnt); + DO(tzh_ttisstdcnt); + DO(tzh_leapcnt); + DO(tzh_timecnt); + DO(tzh_typecnt); + DO(tzh_charcnt); #undef DO - for (i = 0; i < timecnt; ++i) { - j = leapcnt; - while (--j >= 0) - if (ats[i] >= trans[j]) { - ats[i] = tadd(ats[i], corr[j]); - break; - } - puttzcode((long) ats[i], fp); - } - if (timecnt > 0) - (void) fwrite((void *) types, (size_t) sizeof types[0], - (size_t) timecnt, fp); - for (i = 0; i < typecnt; ++i) { - puttzcode((long) gmtoffs[i], fp); - (void) putc(isdsts[i], fp); - (void) putc(abbrinds[i], fp); - } - if (charcnt != 0) - (void) fwrite((void *) chars, (size_t) sizeof chars[0], - (size_t) charcnt, fp); - for (i = 0; i < leapcnt; ++i) { - if (roll[i]) { - if (timecnt == 0 || trans[i] < ats[0]) { - j = 0; - while (isdsts[j]) - if (++j >= typecnt) { - j = 0; - break; - } - } else { - j = 1; - while (j < timecnt && trans[i] >= ats[j]) - ++j; - j = types[j - 1]; + for (i = thistimei; i < thistimelim; ++i) + if (pass == 1) + puttzcode((long) ats[i], fp); + else puttzcode64(ats[i], fp); + for (i = thistimei; i < thistimelim; ++i) { + unsigned char uc; + + uc = typemap[types[i]]; + (void) fwrite((void *) &uc, + (size_t) sizeof uc, + (size_t) 1, + fp); + } + for (i = 0; i < typecnt; ++i) + if (writetype[i]) { + puttzcode(gmtoffs[i], fp); + (void) putc(isdsts[i], fp); + (void) putc((unsigned char) indmap[abbrinds[i]], fp); } - puttzcode((long) tadd(trans[i], -gmtoffs[j]), fp); - } else puttzcode((long) trans[i], fp); - puttzcode((long) corr[i], fp); - } - for (i = 0; i < typecnt; ++i) - (void) putc(ttisstds[i], fp); - for (i = 0; i < typecnt; ++i) - (void) putc(ttisgmts[i], fp); + if (thischarcnt != 0) + (void) fwrite((void *) thischars, + (size_t) sizeof thischars[0], + (size_t) thischarcnt, fp); + for (i = thisleapi; i < thisleaplim; ++i) { + register zic_t todo; + + if (roll[i]) { + if (timecnt == 0 || trans[i] < ats[0]) { + j = 0; + while (isdsts[j]) + if (++j >= typecnt) { + j = 0; + break; + } + } else { + j = 1; + while (j < timecnt && + trans[i] >= ats[j]) + ++j; + j = types[j - 1]; + } + todo = tadd(trans[i], -gmtoffs[j]); + } else todo = trans[i]; + if (pass == 1) + puttzcode((long) todo, fp); + else puttzcode64(todo, fp); + puttzcode(corr[i], fp); + } + for (i = 0; i < typecnt; ++i) + if (writetype[i]) + (void) putc(ttisstds[i], fp); + for (i = 0; i < typecnt; ++i) + if (writetype[i]) + (void) putc(ttisgmts[i], fp); + } + (void) fprintf(fp, "\n%s\n", string); if (ferror(fp) || fclose(fp)) { (void) fprintf(stderr, _("%s: Error writing %s\n"), progname, fullname); @@ -1602,21 +1737,223 @@ const char * const name; } static void -doabbr(abbr, format, letters, isdst) +doabbr(abbr, format, letters, isdst, doquotes) char * const abbr; const char * const format; const char * const letters; const int isdst; +const int doquotes; { - if (strchr(format, '/') == NULL) { + register char * cp; + register char * slashp; + register int len; + + slashp = strchr(format, '/'); + if (slashp == NULL) { if (letters == NULL) (void) strcpy(abbr, format); else (void) sprintf(abbr, format, letters); - } else if (isdst) - (void) strcpy(abbr, strchr(format, '/') + 1); - else { - (void) strcpy(abbr, format); - *strchr(abbr, '/') = '\0'; + } else if (isdst) { + (void) strcpy(abbr, slashp + 1); + } else { + if (slashp > format) + (void) strncpy(abbr, format, + (unsigned) (slashp - format)); + abbr[slashp - format] = '\0'; + } + if (!doquotes) + return; + for (cp = abbr; *cp != '\0'; ++cp) + if (strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", *cp) == NULL && + strchr("abcdefghijklmnopqrstuvwxyz", *cp) == NULL) + break; + len = strlen(abbr); + if (len > 0 && *cp == '\0') + return; + abbr[len + 2] = '\0'; + abbr[len + 1] = '>'; + for ( ; len > 0; --len) + abbr[len] = abbr[len - 1]; + abbr[0] = '<'; +} + +static void +updateminmax(x) +const int x; +{ + if (min_year > x) + min_year = x; + if (max_year < x) + max_year = x; +} + +static int +stringoffset(result, offset) +char * result; +long offset; +{ + register int hours; + register int minutes; + register int seconds; + + result[0] = '\0'; + if (offset < 0) { + (void) strcpy(result, "-"); + offset = -offset; + } + seconds = offset % SECSPERMIN; + offset /= SECSPERMIN; + minutes = offset % MINSPERHOUR; + offset /= MINSPERHOUR; + hours = offset; + if (hours >= HOURSPERDAY) { + result[0] = '\0'; + return -1; + } + (void) sprintf(end(result), "%d", hours); + if (minutes != 0 || seconds != 0) { + (void) sprintf(end(result), ":%02d", minutes); + if (seconds != 0) + (void) sprintf(end(result), ":%02d", seconds); + } + return 0; +} + +static int +stringrule(result, rp, dstoff, gmtoff) +char * result; +const struct rule * const rp; +const long dstoff; +const long gmtoff; +{ + register long tod; + + result = end(result); + if (rp->r_dycode == DC_DOM) { + register int month, total; + + if (rp->r_dayofmonth == 29 && rp->r_month == TM_FEBRUARY) + return -1; + total = 0; + for (month = 0; month < rp->r_month; ++month) + total += len_months[0][month]; + (void) sprintf(result, "J%d", total + rp->r_dayofmonth); + } else { + 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", + rp->r_month + 1, week, rp->r_wday); + } + tod = rp->r_tod; + if (rp->r_todisgmt) + tod += gmtoff; + if (rp->r_todisstd && rp->r_stdoff == 0) + tod += dstoff; + if (tod < 0) { + result[0] = '\0'; + return -1; + } + if (tod != 2 * SECSPERMIN * MINSPERHOUR) { + (void) strcat(result, "/"); + if (stringoffset(end(result), tod) != 0) + return -1; + } + return 0; +} + +static void +stringzone(result, zpfirst, zonecount) +char * result; +const struct zone * const zpfirst; +const int zonecount; +{ + register const struct zone * zp; + register struct rule * rp; + register struct rule * stdrp; + register struct rule * dstrp; + register int i; + register const char * abbrvar; + + result[0] = '\0'; + zp = zpfirst + zonecount - 1; + stdrp = dstrp = NULL; + for (i = 0; i < zp->z_nrules; ++i) { + rp = &zp->z_rules[i]; + if (rp->r_hiwasnum || rp->r_hiyear != INT_MAX) + continue; + if (rp->r_yrtype != NULL) + continue; + if (rp->r_stdoff == 0) { + if (stdrp == NULL) + stdrp = rp; + else return; + } else { + if (dstrp == NULL) + dstrp = rp; + else return; + } + } + if (stdrp == NULL && dstrp == NULL) { + /* + ** There are no rules running through "max". + ** Let's find the latest rule. + */ + for (i = 0; i < zp->z_nrules; ++i) { + rp = &zp->z_rules[i]; + if (stdrp == NULL || rp->r_hiyear > stdrp->r_hiyear || + (rp->r_hiyear == stdrp->r_hiyear && + rp->r_month > stdrp->r_month)) + stdrp = rp; + } + if (stdrp != NULL && stdrp->r_stdoff != 0) + return; /* We end up in DST (a POSIX no-no). */ + /* + ** Horrid special case: if year is 2037, + ** presume this is a zone handled on a year-by-year basis; + ** do not try to apply a rule to the zone. + */ + if (stdrp != NULL && stdrp->r_hiyear == 2037) + return; + } + if (stdrp == NULL && zp->z_nrules != 0) + return; + abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar; + doabbr(result, zp->z_format, abbrvar, FALSE, TRUE); + if (stringoffset(end(result), -zp->z_gmtoff) != 0) { + result[0] = '\0'; + return; + } + if (dstrp == NULL) + return; + doabbr(end(result), zp->z_format, dstrp->r_abbrvar, TRUE, TRUE); + if (dstrp->r_stdoff != SECSPERMIN * MINSPERHOUR) + if (stringoffset(end(result), + -(zp->z_gmtoff + dstrp->r_stdoff)) != 0) { + result[0] = '\0'; + return; + } + (void) strcat(result, ","); + if (stringrule(result, dstrp, dstrp->r_stdoff, zp->z_gmtoff) != 0) { + result[0] = '\0'; + return; + } + (void) strcat(result, ","); + if (stringrule(result, stdrp, dstrp->r_stdoff, zp->z_gmtoff) != 0) { + result[0] = '\0'; + return; } } @@ -1637,8 +1974,17 @@ const int zonecount; register int startttisstd; register int startttisgmt; register int type; - char startbuf[BUFSIZ]; - + register char * startbuf; + register char * ab; + register char * envvar; + register int max_abbr_len; + register int max_envvar_len; + + max_abbr_len = 2 + max_format_len + max_abbrvar_len; + max_envvar_len = 2 * max_abbr_len + 5 * 9; + startbuf = emalloc(max_abbr_len + 1); + ab = emalloc(max_abbr_len + 1); + envvar = emalloc(max_envvar_len + 1); INITIALIZE(untiltime); INITIALIZE(starttime); /* @@ -1653,6 +1999,48 @@ const int zonecount; */ startttisstd = FALSE; startttisgmt = FALSE; + min_year = max_year = EPOCH_YEAR; + if (leapseen) { + updateminmax(leapminyear); + updateminmax(leapmaxyear); + } + for (i = 0; i < zonecount; ++i) { + zp = &zpfirst[i]; + updateminmax(zp->z_untilrule.r_loyear); + for (j = 0; j < zp->z_nrules; ++j) { + rp = &zp->z_rules[j]; + if (rp->r_lowasnum) + updateminmax(rp->r_loyear); + if (rp->r_hiwasnum) + updateminmax(rp->r_hiyear); + } + } + /* + ** Generate lots of data if a rule can't cover all future times. + */ + stringzone(envvar, zpfirst, zonecount); + if (noise && envvar[0] == '\0') { + register char * wp; + +wp = ecpyalloc(_("no POSIX environment variable for zone")); + wp = ecatalloc(wp, " "); + wp = ecatalloc(wp, zpfirst->z_name); + warning(wp); + ifree(wp); + } + if (envvar[0] == '\0') { + if (min_year >= INT_MIN + YEARSPERREPEAT) + min_year -= YEARSPERREPEAT; + else min_year = INT_MIN; + if (max_year <= INT_MAX - YEARSPERREPEAT) + max_year += YEARSPERREPEAT; + else max_year = INT_MAX; + } + /* + ** For the benefit of older systems, generate data through 2037. + */ + if (max_year < 2037) + max_year = 2037; for (i = 0; i < zonecount; ++i) { /* ** A guess that may well be corrected later. @@ -1670,7 +2058,7 @@ const int zonecount; if (zp->z_nrules == 0) { stdoff = zp->z_stdoff; doabbr(startbuf, zp->z_format, - (char *) NULL, stdoff != 0); + (char *) NULL, stdoff != 0, FALSE); type = addtype(oadd(zp->z_gmtoff, stdoff), startbuf, stdoff != 0, startttisstd, startttisgmt); @@ -1700,7 +2088,6 @@ const int zonecount; register int k; register zic_t jtime, ktime; register long offset; - char buf[BUFSIZ]; INITIALIZE(ktime); if (useuntil) { @@ -1756,24 +2143,27 @@ const int zonecount; stdoff); doabbr(startbuf, zp->z_format, rp->r_abbrvar, - rp->r_stdoff != 0); + rp->r_stdoff != 0, + FALSE); continue; } if (*startbuf == '\0' && startoff == oadd(zp->z_gmtoff, - stdoff)) + stdoff)) { doabbr(startbuf, zp->z_format, rp->r_abbrvar, rp->r_stdoff != - 0); + 0, + FALSE); + } } eats(zp->z_filename, zp->z_linenum, rp->r_filename, rp->r_linenum); - doabbr(buf, zp->z_format, rp->r_abbrvar, - rp->r_stdoff != 0); + doabbr(ab, zp->z_format, rp->r_abbrvar, + rp->r_stdoff != 0, FALSE); offset = oadd(zp->z_gmtoff, rp->r_stdoff); - type = addtype(offset, buf, rp->r_stdoff != 0, + type = addtype(offset, ab, rp->r_stdoff != 0, rp->r_todisstd, rp->r_todisgmt); addtt(ktime, type); } @@ -1806,7 +2196,10 @@ error(_("can't determine time zone abbreviation to use just after until time")); starttime = tadd(starttime, -gmtoff); } } - writezone(zpfirst->z_name); + writezone(zpfirst->z_name, envvar); + ifree(startbuf); + ifree(ab); + ifree(envvar); } static void @@ -2185,8 +2578,6 @@ register const int wantedy; will not work with pre-2004 versions of zic")); } } - if (dayoff < 0 && !TYPE_SIGNED(zic_t)) - return min_time; if (dayoff < min_time / SECSPERDAY) return min_time; if (dayoff > max_time / SECSPERDAY) diff --git a/timezone/zone.tab b/timezone/zone.tab index 09cdf6940a..aecb5bb94c 100644 --- a/timezone/zone.tab +++ b/timezone/zone.tab @@ -1,4 +1,4 @@ -# @(#)zone.tab 8.1 +# @(#)zone.tab 8.5 # # TZ zone descriptions # @@ -44,7 +44,7 @@ AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF) AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL) AR -2411-06518 America/Argentina/Jujuy Jujuy (JY) -AR -3124-06411 America/Argentina/Tucuman Tucuman (TM) +AR -2649-06513 America/Argentina/Tucuman Tucuman (TM) AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH) AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR) AR -3132-06831 America/Argentina/San_Juan San Juan (SJ) @@ -99,27 +99,28 @@ BT +2728+08939 Asia/Thimphu BW -2545+02555 Africa/Gaborone BY +5354+02734 Europe/Minsk BZ +1730-08812 America/Belize -CA +4734-05243 America/St_Johns Newfoundland Island -CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most places), W Labrador, E Quebec & PEI +CA +4734-05243 America/St_Johns Newfoundland Time, including SE Labrador +CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most places), PEI CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971 CA +4606-06447 America/Moncton Atlantic Time - New Brunswick -CA +5320-06025 America/Goose_Bay Atlantic Time - E Labrador +CA +5320-06025 America/Goose_Bay Atlantic Time - Labrador - most locations +CA +5125-05707 America/Blanc-Sablon Atlantic Standard Time - Quebec - Lower North Shore CA +4531-07334 America/Montreal Eastern Time - Quebec - most locations CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973 CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario CA +6608-06544 America/Pangnirtung Eastern Time - Pangnirtung, Nunavut CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut -CA +6408-08310 America/Coral_Harbour Eastern Standard Time - Southampton Island -CA +6245-09210 America/Rankin_Inlet Central Time - central Nunavut +CA +484531-0913718 America/Atikokan Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut +CA +624900-0920459 America/Rankin_Inlet Central Time - central Nunavut CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario -CA +4843-09429 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario +CA +4843-09434 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario CA +6903-10505 America/Cambridge_Bay Central Time - west Nunavut CA +5024-10439 America/Regina Central Standard Time - Saskatchewan - most locations CA +5017-10750 America/Swift_Current Central Standard Time - Saskatchewan - midwest CA +5333-11328 America/Edmonton Mountain Time - Alberta, east British Columbia & west Saskatchewan CA +6227-11421 America/Yellowknife Mountain Time - central Northwest Territories -CA +6825-11330 America/Inuvik Mountain Time - west Northwest Territories +CA +682059-1334300 America/Inuvik Mountain Time - west Northwest Territories CA +5946-12014 America/Dawson_Creek Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia CA +4916-12307 America/Vancouver Pacific Time - west British Columbia CA +6043-13503 America/Whitehorse Pacific Time - south Yukon @@ -136,13 +137,12 @@ CL -3327-07040 America/Santiago most locations CL -2710-10927 Pacific/Easter Easter Island & Sala y Gomez CM +0403+00942 Africa/Douala CN +3114+12128 Asia/Shanghai east China - Beijing, Guangdong, Shanghai, etc. -CN +4545+12641 Asia/Harbin Heilongjiang -CN +2934+10635 Asia/Chongqing central China - Gansu, Guizhou, Sichuan, Yunnan, etc. -CN +4348+08735 Asia/Urumqi Tibet & most of Xinjiang Uyghur -CN +3929+07559 Asia/Kashgar southwest Xinjiang Uyghur +CN +4545+12641 Asia/Harbin Heilongjiang (except Mohe), Jilin +CN +2934+10635 Asia/Chongqing central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc. +CN +4348+08735 Asia/Urumqi most of Tibet & Xinjiang +CN +3929+07559 Asia/Kashgar west Tibet & Xinjiang CO +0436-07405 America/Bogota CR +0956-08405 America/Costa_Rica -CS +4450+02030 Europe/Belgrade CU +2308-08222 America/Havana CV +1455-02331 Atlantic/Cape_Verde CX -1025+10543 Indian/Christmas @@ -177,11 +177,12 @@ GB +512830-0001845 Europe/London GD +1203-06145 America/Grenada GE +4143+04449 Asia/Tbilisi GF +0456-05220 America/Cayenne +GG +4927-00232 Europe/Guernsey GH +0533-00013 Africa/Accra GI +3608-00521 Europe/Gibraltar GL +6411-05144 America/Godthab most locations GL +7646-01840 America/Danmarkshavn east coast, north of Scoresbysund -GL +7030-02215 America/Scoresbysund Scoresbysund / Ittoqqortoormiit +GL +7029-02158 America/Scoresbysund Scoresbysund / Ittoqqortoormiit GL +7634-06847 America/Thule Thule / Pituffik GM +1328-01639 Africa/Banjul GN +0931-01343 Africa/Conakry @@ -204,12 +205,14 @@ ID -0507+11924 Asia/Makassar east & south Borneo, Celebes, Bali, Nusa Tengarra, ID -0232+14042 Asia/Jayapura Irian Jaya & the Moluccas IE +5320-00615 Europe/Dublin IL +3146+03514 Asia/Jerusalem +IM +5409-00428 Europe/Isle_of_Man IN +2232+08822 Asia/Calcutta IO -0720+07225 Indian/Chagos IQ +3321+04425 Asia/Baghdad IR +3540+05126 Asia/Tehran IS +6409-02151 Atlantic/Reykjavik IT +4154+01229 Europe/Rome +JE +4912-00237 Europe/Jersey JM +1800-07648 America/Jamaica JO +3157+03556 Asia/Amman JP +353916+1394441 Asia/Tokyo @@ -244,6 +247,7 @@ LY +3254+01311 Africa/Tripoli MA +3339-00735 Africa/Casablanca MC +4342+00723 Europe/Monaco MD +4700+02850 Europe/Chisinau +ME +4247+01928 Europe/Podgorica MG -1855+04731 Indian/Antananarivo MH +0709+17112 Pacific/Majuro most locations MH +0905+16720 Pacific/Kwajalein Kwajalein @@ -257,7 +261,7 @@ MO +2214+11335 Asia/Macau MP +1512+14545 Pacific/Saipan MQ +1436-06105 America/Martinique MR +1806-01557 Africa/Nouakchott -MS +1644-06213 America/Montserrat +MS +1643-06213 America/Montserrat MT +3554+01431 Europe/Malta MU -2010+05730 Indian/Mauritius MV +0410+07330 Indian/Maldives @@ -308,9 +312,11 @@ PY -2516-05740 America/Asuncion QA +2517+05132 Asia/Qatar RE -2052+05528 Indian/Reunion RO +4426+02606 Europe/Bucharest +RS +4450+02030 Europe/Belgrade RU +5443+02030 Europe/Kaliningrad Moscow-01 - Kaliningrad RU +5545+03735 Europe/Moscow Moscow+00 - west Russia -RU +5312+05009 Europe/Samara Moscow+01 - Caspian Sea +RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea +RU +5312+05009 Europe/Samara Moscow+01 - Samara, Udmurtia RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk @@ -376,10 +382,11 @@ US +382232-0862041 America/Indiana/Marengo Eastern Time - Indiana - Crawford Cou US +411745-0863730 America/Indiana/Knox Eastern Time - Indiana - Starke County US +384452-0850402 America/Indiana/Vevay Eastern Time - Indiana - Switzerland County US +415100-0873900 America/Chicago Central Time -US +384038-0873143 America/Indiana/Vincennes Central Time - Indiana - Daviess, Dubois, Knox, Martin, Perry & Pulaski +US +384038-0873143 America/Indiana/Vincennes Central Time - Indiana - Daviess, Dubois, Knox, Martin, Perry & Pulaski Counties US +382931-0871643 America/Indiana/Petersburg Central Time - Indiana - Pike County US +450628-0873651 America/Menominee Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties US +470659-1011757 America/North_Dakota/Center Central Time - North Dakota - Oliver County +US +465042-1012439 America/North_Dakota/New_Salem Central Time - North Dakota - Morton County (except Mandan area) US +394421-1045903 America/Denver Mountain Time US +433649-1161209 America/Boise Mountain Time - south Idaho & east Oregon US +364708-1084111 America/Shiprock Mountain Time - Navajo |