#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# tzdb data for Asia and environs

# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.

# This file is by no means authoritative; if you think you know better,
# go ahead and edit the file (and please send any changes to
# tz@iana.org for general use in the future).  For more, please see
# the file CONTRIBUTING in the tz distribution.

# From Paul Eggert (2019-07-11):
#
# Unless otherwise specified, the source for data through 1990 is:
# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
# San Diego: ACS Publications, Inc. (2003).
# Unfortunately this book contains many errors and cites no sources.
#
# Many years ago Gwillim Law wrote that a good source
# for time zone data was the International Air Transport
# Association's Standard Schedules Information Manual (IATA SSIM),
# published semiannually.  Law sent in several helpful summaries
# of the IATA's data after 1990.  Except where otherwise noted,
# IATA SSIM is the source for entries after 1990.
#
# Another source occasionally used is Edward W. Whitman, World Time Differences,
# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
# I found in the UCLA library.
#
# For data circa 1899, a common source is:
# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94.
# https://www.jstor.org/stable/1774359
#
# For Russian data circa 1919, a source is:
# Byalokoz EL. New Counting of Time in Russia since July 1, 1919.
# (See the 'europe' file for a fuller citation.)
#
# The following alphabetic abbreviations appear in these tables
# (corrections are welcome):
#	     std  dst
#	     LMT	Local Mean Time
#	2:00 EET  EEST	Eastern European Time
#	2:00 IST  IDT	Israel
#	5:30 IST	India
#	7:00 WIB	west Indonesia (Waktu Indonesia Barat)
#	8:00 WITA	central Indonesia (Waktu Indonesia Tengah)
#	8:00 CST	China
#	8:00 HKT  HKST	Hong Kong (HKWT* for Winter Time in late 1941)
#	8:00 PST  PDT*	Philippines
#	8:30 KST  KDT	Korea when at +0830
#	9:00 WIT	east Indonesia (Waktu Indonesia Timur)
#	9:00 JST  JDT	Japan
#	9:00 KST  KDT	Korea when at +09
# *I invented the abbreviations HKWT and PDT; see below.
# Otherwise, these tables typically use numeric abbreviations like +03
# and +0330 for integer hour and minute UT offsets.  Although earlier
# editions invented alphabetic time zone abbreviations for every
# offset, this did not reflect common practice.
#
# See the 'europe' file for Russia and Turkey in Asia.

# From Guy Harris:
# Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
# additional information from Tom Yap, Sun Microsystems Intercontinental
# Technical Support (including a page from the Official Airline Guide -
# Worldwide Edition).

###############################################################################

# These rules are stolen from the 'europe' file.
# Rule	NAME	FROM	TO	-	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	-
Rule E-EurAsia	1979	1995	-	Sep	lastSun	 0:00	0	-
Rule E-EurAsia	1996	max	-	Oct	lastSun	 0:00	0	-
Rule RussiaAsia	1981	1984	-	Apr	1	 0:00	1:00	-
Rule RussiaAsia	1981	1983	-	Oct	1	 0:00	0	-
Rule RussiaAsia	1984	1995	-	Sep	lastSun	 2:00s	0	-
Rule RussiaAsia	1985	2010	-	Mar	lastSun	 2:00s	1:00	-
Rule RussiaAsia	1996	2010	-	Oct	lastSun	 2:00s	0	-

# Afghanistan
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Kabul	4:36:48 -	LMT	1890
			4:00	-	%z	1945
			4:30	-	%z

# Armenia
# 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,
# but started switching at 3:00s in 1998.

# From Arthur David Olson (2011-06-15):
# While Russia abandoned DST in 2011, Armenia may choose to
# follow Russia's "old" rules.

# From Alexander Krivenyshev (2012-02-10):
# According to News Armenia, on Feb 9, 2012,
# http://newsarmenia.ru/society/20120209/42609695.html
#
# The Armenia National Assembly adopted final reading of Amendments to the
# Law "On procedure of calculation time on the territory of the Republic of
# Armenia" according to which Armenia [is] abolishing Daylight Saving Time.
# or
# (brief)
# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule Armenia	2011	only	-	Mar	lastSun	 2:00s	1:00	-
Rule Armenia	2011	only	-	Oct	lastSun	 2:00s	0	-
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
			3:00	-	%z	1957 Mar
			4:00 RussiaAsia %z	1991 Mar 31  2:00s
			3:00 RussiaAsia	%z	1995 Sep 24  2:00s
			4:00	-	%z	1997
			4:00 RussiaAsia	%z	2011
			4:00	Armenia	%z

# Azerbaijan

# From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):
# According to the resolution of Cabinet of Ministers, 1997
# From Paul Eggert (2015-09-17): It was Resolution No. 21 (1997-03-17).
# http://code.az/files/daylight_res.pdf

# From Steffen Thorsen (2016-03-17):
# ... the Azerbaijani Cabinet of Ministers has cancelled switching to
# daylight saving time....
# https://www.azernews.az/azerbaijan/94137.html
# http://vestnikkavkaza.net/news/Azerbaijani-Cabinet-of-Ministers-cancels-daylight-saving-time.html
# http://en.apa.az/xeber_azerbaijan_abolishes_daylight_savings_ti_240862.html

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Azer	1997	2015	-	Mar	lastSun	 4:00	1:00	-
Rule	Azer	1997	2015	-	Oct	lastSun	 5:00	0	-
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Baku	3:19:24 -	LMT	1924 May  2
			3:00	-	%z	1957 Mar
			4:00 RussiaAsia %z	1991 Mar 31  2:00s
			3:00 RussiaAsia	%z	1992 Sep lastSun  2:00s
			4:00	-	%z	1996
			4:00	EUAsia	%z	1997
			4:00	Azer	%z

# Bangladesh
# From Alexander Krivenyshev (2009-05-13):
# According to newspaper Asian Tribune (May 6, 2009) Bangladesh may introduce
# Daylight Saving Time from June 16 to Sept 30
#
# Bangladesh to introduce daylight saving time likely from June 16
# http://www.asiantribune.com/?q=node/17288
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh02.html
#
# "... Bangladesh government has decided to switch daylight saving time from
# June
# 16 till September 30 in a bid to ensure maximum use of daylight to cope with
# crippling power crisis. "
#
# The switch will remain in effect from June 16 to Sept 30 (2009) but if
# implemented the next year, it will come in force from April 1, 2010

# From Steffen Thorsen (2009-06-02):
# They have finally decided now, but changed the start date to midnight between
# the 19th and 20th, and they have not set the end date yet.
#
# Some sources:
# https://in.reuters.com/article/southAsiaNews/idINIndia-40017620090601
# http://bdnews24.com/details.php?id=85889&cid=2
#
# Our wrap-up:
# https://www.timeanddate.com/news/time/bangladesh-daylight-saving-2009.html

# From A. N. M. Kamrus Saadat (2009-06-15):
# Finally we've got the official mail regarding DST start time where DST start
# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh
# Telecommunication Regulatory Commission).
#
# No DST end date has been announced yet.

# From Alexander Krivenyshev (2009-09-25):
# Bangladesh won't go back to Standard Time from October 1, 2009,
# instead it will continue DST measure till the cabinet makes a fresh decision.
#
# Following report by same newspaper-"The Daily Star Friday":
# "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
# http://www.thedailystar.net/newDesign/news-details.php?nid=107021
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html

# From Steffen Thorsen (2009-10-13):
# IANS (Indo-Asian News Service) now reports:
# Bangladesh has decided that the clock advanced by an hour to make
# maximum use of daylight hours as an energy saving measure would
# "continue for an indefinite period."
#
# One of many places where it is published:
# http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html

# From Alexander Krivenyshev (2009-12-24):
# According to Bangladesh newspaper "The Daily Star,"
# Bangladesh will change its clock back to Standard Time on Dec 31, 2009.
#
# Clock goes back 1-hr on Dec 31 night.
# http://www.thedailystar.net/newDesign/news-details.php?nid=119228
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh05.html
#
# "...The government yesterday decided to put the clock back by one hour
# on December 31 midnight and the new time will continue until March 31,
# 2010 midnight. The decision came at a cabinet meeting at the Prime
# Minister's Office last night..."

# From Alexander Krivenyshev (2010-03-22):
# According to Bangladesh newspaper "The Daily Star,"
# Cabinet cancels Daylight Saving Time
# http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh06.html

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Dhaka	2009	only	-	Jun	19	23:00	1:00	-
Rule	Dhaka	2009	only	-	Dec	31	24:00	0	-

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Dhaka	6:01:40 -	LMT	1890
			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
			6:30	-	%z	1942 May 15
			5:30	-	%z	1942 Sep
			6:30	-	%z	1951 Sep 30
			6:00	-	%z	2009
			6:00	Dhaka	%z

# Bhutan
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Thimphu	5:58:36 -	LMT	1947 Aug 15 # or Thimbu
			5:30	-	%z	1987 Oct
			6:00	-	%z

# British Indian Ocean Territory
# Whitman and the 1995 CIA time zone map say 5:00, but the
# 1997 and later maps say 6:00.  Assume the switch occurred in 1996.
# We have no information as to when standard time was introduced;
# assume it occurred in 1907, the same year as Mauritius (which
# then contained the Chagos Archipelago).
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Indian/Chagos	4:49:40	-	LMT	1907
			5:00	-	%z	1996
			6:00	-	%z

# Cocos (Keeling) Islands
# Myanmar (Burma)

# Milne says 6:24:40 was the meridian of the time ball observatory at Rangoon.

# From Paul Eggert (2017-04-20):
# Page 27 of Reed & Low (cited for Asia/Kolkata) says "Rangoon local time is
# used upon the railways and telegraphs of Burma, and is 6h. 24m. 47s. ahead
# of Greenwich."  This refers to the period before Burma's transition to +0630,
# a transition for which Shanks is the only source.

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Yangon	6:24:47 -	LMT	1880        # or Rangoon
			6:24:47	-	RMT	1920        # Rangoon local time
			6:30	-	%z	1942 May
			9:00	-	%z	1945 May  3
			6:30	-	%z

# China

# From Phake Nick (2020-04-15):
# According to this news report:
# http://news.sina.com.cn/c/2004-09-01/19524201403.shtml
# on April 11, 1919, newspaper in Shanghai said clocks in Shanghai will spring
# forward for an hour starting from midnight of that Saturday. The report did
# not mention what happened in Shanghai thereafter, but it mentioned that a
# similar trial in Tianjin which ended at October 1st as citizens are told to
# recede the clock on September 30 from 12:00pm to 11:00pm. The trial at
# Tianjin got terminated in 1920.
#
# From Paul Eggert (2020-04-15):
# The Returns of Trade and Trade Reports, page 711, says "Daylight saving was
# given a trial during the year, and from the 12th April to the 1st October
# the clocks were all set one hour ahead of sun time.  Though the scheme was
# generally esteemed a success, it was announced early in 1920 that it would
# not be repeated."
#
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Shang	1919	only	-	Apr	12	24:00	1:00	D
Rule	Shang	1919	only	-	Sep	30	24:00	0	S

# From Paul Eggert (2018-10-02):
# The following comes from Table 1 of:
# Li Yu. Research on the daylight saving movement in 1940s Shanghai.
# Nanjing Journal of Social Sciences. 2014;(2):144-50.
# http://oversea.cnki.net/kns55/detail.aspx?dbname=CJFD2014&filename=NJSH201402020
# The table lists dates only; I am guessing 00:00 and 24:00 transition times.
# Also, the table lists the planned end of DST in 1949, but the corresponding
# zone line cuts this off on May 28, when the Communists took power.

# From Phake Nick (2020-04-15):
#
# For the history of time in Shanghai between 1940-1942, the situation is
# actually slightly more complex than the table [below]....  At the time,
# there were three different authorities in Shanghai, including Shanghai
# International Settlement, a settlement established by western countries with
# its own westernized form of government, Shanghai French Concession, similar
# to the international settlement but is controlled by French, and then the
# rest of the city of Shanghai, which have already been controlled by Japanese
# force through a puppet local government (Wang Jingwei regime).  It was
# additionally complicated by the circumstances that, according to the 1940s
# Shanghai summer time essay cited in the database, some
# departments/businesses/people in the Shanghai city itself during that time
# period, refused to change their clock and instead only changed their opening
# hours.
#
# For example, as quoted in the article, in 1940, other than the authority
# itself, power, tram, bus companies, cinema, department stores, and other
# public service organizations have all decided to follow the summer time and
# spring forward the clock.  On the other hand, the custom office refused to
# spring forward the clock because of worry on mechanical wear to the physical
# clock, postal office refused to spring forward because of disruption to
# business and log-keeping, although they did changed their office hour to
# match rest of the city.  So is travel agents, and also weather
# observatory.  It is said both time standards had their own supporters in the
# city at the time, those who prefer new time standard would have moved their
# clock while those who prefer the old time standard would keep their clock
# unchange, and there were different clocks that use different time standard
# in the city at the time for people who use different time standard to adjust
# their clock to their preferred time.
#
# a. For the 1940 May 31 spring forward, the essay [says] ... "Hong
# Kong government implemented the spring forward in the same time on
# the same date as Shanghai".
#
# b. For the 1940 fall back, it was said that they initially intended to do
# so on September 30 00:59 at night, however they postponed it to October 12
# after discussion with relevant parties. However schools restored to the
# original schedule ten days earlier.
#
# c. For the 1941 spring forward, it is said to start from March 15
# "following the previous year's method", and in addition to that the essay
# cited an announcement in 1941 from the Wang regime which said the Special
# City of Shanghai under Wang regime control will follow the DST rule set by
# the Settlements, irrespective of the original DST plan announced by the Wang
# regime for other area under its control(April 1 to September 30). (no idea
# to situation before that announcement)
#
# d. For the 1941 fall back, it was said that the fall back would occurs at
# the end of September (A newspaper headline cited by the essay, published on
# October 1, 1941, have the headlines which said "French Concession would
# rewind to the old clock this morning), but it ultimately didn't happen due
# to disagreement between the international settlement authority and the
# French concession authority, and the fall back ultimately occurred on
# November 1.
#
# e. In 1941 December, Japan have officially started war with the United
# States and the United Kingdom, and in Shanghai they have marched into the
# international settlement, taken over its control
#
# f. For the 1942 spring forward, the essay said that the spring forward
# started on January 31. It said this time the custom office and postal
# department will also change their clocks, unlike before.
#
# g. The essay itself didn't cover any specific changes thereafter until the
# end of the war, it quoted a November 1942 command from the government of the
# Wang regime, which claim the daylight saving time applies year round during
# the war. However, the essay ambiguously said the period is "February 1 to
# September 30", which I don't really understand what is the meaning of such
# period in the context of year round implementation here.. More researches
# might be needed to show exactly what happened during that period of time.

# From Phake Nick (2020-04-15):
# According to a Japanese tour bus pamphlet in Nanjing area believed to be
# from around year 1941: http://www.tt-museum.jp/tairiku_0280_nan1941.html ,
# the schedule listed was in the format of Japanese time.  Which indicate some
# use of the Japanese time (instead of syncing by DST) might have occurred in
# the Yangtze river delta area during that period of time although the scope
# of such use will need to be investigated to determine.
#
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Shang	1940	only	-	Jun	 1	 0:00	1:00	D
Rule	Shang	1940	only	-	Oct	12	24:00	0	S
Rule	Shang	1941	only	-	Mar	15	 0:00	1:00	D
Rule	Shang	1941	only	-	Nov	 1	24:00	0	S
Rule	Shang	1942	only	-	Jan	31	 0:00	1:00	D
Rule	Shang	1945	only	-	Sep	 1	24:00	0	S
Rule	Shang	1946	only	-	May	15	 0:00	1:00	D
Rule	Shang	1946	only	-	Sep	30	24:00	0	S
Rule	Shang	1947	only	-	Apr	15	 0:00	1:00	D
Rule	Shang	1947	only	-	Oct	31	24:00	0	S
Rule	Shang	1948	1949	-	May	 1	 0:00	1:00	D
Rule	Shang	1948	1949	-	Sep	30	24:00	0	S #plan

# From Guy Harris:
# People's Republic of China.  Yes, they really have only one time zone.

# From Bob Devine (1988-01-28):
# No they don't.  See TIME mag, 1986-02-17 p.52.  Even though
# China is across 4 physical time zones, before Feb 1, 1986 only the
# Peking (Beijing) time zone was recognized.  Since that date, China
# has two of 'em - Peking's and Ürümqi (named after the capital of
# the Xinjiang Uyghur Autonomous Region).  I don't know about DST for it.
#
# . . .I just deleted the DST table and this editor makes it too
# painful to suck in another copy.  So, here is what I have for
# DST start/end dates for Peking's time zone (info from AP):
#
#     1986 May 4 - Sept 14
#     1987 mid-April - ??

# From U. S. Naval Observatory (1989-01-19):
# CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN
# CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10

# From Paul Eggert (2008-02-11):
# Jim Mann, "A clumsy embrace for another western custom: China on daylight
# time - sort of", Los Angeles Times, 1986-05-05 ... [says] that China began
# observing daylight saving time in 1986.

# From P Chan (2018-05-07):
# The start and end time of DST in China [from 1986 on] should be 2:00
# (i.e. 2:00 to 3:00 at the start and 2:00 to 1:00 at the end)....
# Government notices about summer time:
#
# 1986-04-12 http://www.zj.gov.cn/attach/zfgb/198608.pdf p.21-22
# (To establish summer time from 1986. On 4 May, set the clocks ahead one hour
# at 2 am. On 14 September, set the clocks backward one hour at 2 am.)
#
# 1987-02-15 http://www.gov.cn/gongbao/shuju/1987/gwyb198703.pdf p.114
# (Summer time in 1987 to start from 12 April until 13 September)
#
# 1987-09-09 http://www.gov.cn/gongbao/shuju/1987/gwyb198721.pdf p.709
# (From 1988, summer time to start from 2 am of the first Sunday of mid-April
# until 2 am of the first Sunday of mid-September)
#
# 1992-03-03 http://www.gov.cn/gongbao/shuju/1992/gwyb199205.pdf p.152
# (To suspend summer time from 1992)
#
# The first page of People's Daily on 12 April 1988 stating that summer time
# to begin on 17 April.
# http://data.people.com.cn/pic/101p/1988/04/1988041201.jpg

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	PRC	1986	only	-	May	 4	 2:00	1:00	D
Rule	PRC	1986	1991	-	Sep	Sun>=11	 2:00	0	S
Rule	PRC	1987	1991	-	Apr	Sun>=11	 2:00	1:00	D

# 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).
#
# From Jesper Nørgaard Welen (2006-07-14):
# I have investigated the timezones around 1970 on the
# https://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.

# From Paul Eggert (2017-01-05):
# Alois Treindl kindly sent me translations of the following two sources:
#
# (1)
# Guo Qing-sheng (National Time-Service Center, CAS, Xi'an 710600, China)
# Beijing Time at the Beginning of the PRC
# China Historical Materials of Science and Technology
# (Zhongguo ke ji shi liao, 中国科技史料). 2003;24(1):5-9.
# http://oversea.cnki.net/kcms/detail/detail.aspx?filename=ZGKS200301000&dbname=CJFD2003
# It gives evidence that at the beginning of the PRC, Beijing time was
# officially apparent solar time!  However, Guo also says that the
# evidence is dubious, as the relevant institute of astronomy had not
# been taken over by the PRC yet.  It's plausible that apparent solar
# time was announced but never implemented, and that people continued
# to use UT+8.  As the Shanghai radio station (and I presume the
# observatory) was still under control of French missionaries, it
# could well have ignored any such mandate.
#
# (2)
# Guo Qing-sheng (Shaanxi Astronomical Observatory, CAS, Xi'an 710600, China)
# A Study on the Standard Time Changes for the Past 100 Years in China
# [undated and unknown publication location]
# It says several things:
#   * The Qing dynasty used local apparent solar time throughout China.
#   * The Republic of China instituted Beijing mean solar time effective
#     the official calendar book of 1914.
#   * The French Concession in Shanghai set up signal stations in
#     French docks in the 1890s, controlled by Xujiahui (Zikawei)
#     Observatory and set to local mean time.
#   * "From the end of the 19th century" it changed to UT+8.
#   * Chinese Customs (by then reduced to a tool of foreign powers)
#     eventually standardized on this time for all ports, and it
#     became used by railways as well.
#   * In 1918 the Central Observatory proposed dividing China into
#     five time zones (see below for details).  This caught on
#     at first only in coastal areas observing UT+8.
#   * During WWII all of China was in theory was at UT+7.  In practice
#     this was ignored in the west, and I presume was ignored in
#     Japanese-occupied territory.
#   * Japanese-occupied Manchuria was at UT+9, i.e., Japan time.
#   * The five-zone plan was resurrected after WWII and officially put into
#     place (with some modifications) in March 1948.  It's not clear
#     how well it was observed in areas under Nationalist control.
#   * The People's Liberation Army used UT+8 during the civil war.
#
# An AP article "Shanghai Internat'l Area Little Changed" in the
# Lewiston (ME) Daily Sun (1939-05-29), p 17, said "Even the time is
# different - the occupied districts going by Tokyo time, an hour
# ahead of that prevailing in the rest of Shanghai."  Guess that the
# Xujiahui Observatory was under French control and stuck with UT +08.
#
# In earlier versions of this file, China had many separate Zone entries, but
# this was based on what were apparently incorrect data in Shanks & Pottenger.
# This has now been simplified to the two entries Asia/Shanghai and
# Asia/Urumqi, with the others being links for backward compatibility.
# Proposed in 1918 and theoretically in effect until 1949 (although in practice
# mainly observed in coastal areas), the five zones were:
#
# Changbai Time ("Long-white Time", Long-white = Heilongjiang area) UT +08:30
# Now part of Asia/Shanghai; its pre-1970 times are not recorded here.
# Heilongjiang (except Mohe county), Jilin
#
# Zhongyuan Time ("Central plain Time") UT +08
# Now part of Asia/Shanghai.
# most of China
# Milne gives 8:05:43.2 for Xujiahui Observatory time....
# Guo says Shanghai switched to UT +08 "from the end of the 19th century".
#
# Long-shu Time (probably as Long and Shu were two names of the area) UT +07
# Now part of Asia/Shanghai; its pre-1970 times are not recorded here.
# Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;
# most of Gansu; west Inner Mongolia; east Qinghai; and the Guangdong
# counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,
# Yangchun, Yangjiang, Yu'nan, and Yunfu.
#
# Xin-zang Time ("Xinjiang-Tibet Time") UT +06
# This region is now part of either Asia/Urumqi or Asia/Shanghai with
# current boundaries uncertain; times before 1970 for areas that
# disagree with Ürümqi or Shanghai are not recorded here.
# 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 Ürümqi, 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.
#
# Kunlun Time UT +05:30
# This region is now in the same status as Xin-zang Time (see above).
# 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.

# From Luther Ma (2009-10-17):
# Almost all (>99.9%) ethnic Chinese (properly ethnic Han) living in
# Xinjiang use Chinese Standard Time. Some are aware of Xinjiang time,
# but have no need of it. All planes, trains, and schools function on
# what is called "Beijing time." When Han make an appointment in Chinese
# they implicitly use Beijing time.
#
# On the other hand, ethnic Uyghurs, who make up about half the
# population of Xinjiang, typically use "Xinjiang time" which is two
# hours behind Beijing time, or UT +06. The government of the Xinjiang
# Uyghur Autonomous Region, (XAUR, or just Xinjiang for short) as well as
# local governments such as the Ürümqi city government use both times in
# publications, referring to what is popularly called Xinjiang time as
# "Ürümqi time." When Uyghurs make an appointment in the Uyghur language
# they almost invariably use Xinjiang time.
#
# (Their ethnic Han compatriots would typically have no clue of its
# widespread use, however, because so extremely few of them are fluent in
# Uyghur, comparable to the number of Anglo-Americans fluent in Navajo.)
#
# (...As with the rest of China there was a brief interval ending in 1990
# or 1991 when summer time was in use.  The confusion was severe, with
# the province not having dual times but four times in use at the same
# time. Some areas remained on standard Xinjiang time or Beijing time and
# others moving their clocks ahead.)

# From Luther Ma (2009-11-19):
# With the risk of being redundant to previous answers these are the most common
# English "transliterations" (w/o using non-English symbols):
#
# 1. Wulumuqi...
# 2. Kashi...
# 3. Urumqi...
# 4. Kashgar...
# ...
# 5. It seems that Uyghurs in Ürümqi has been using Xinjiang since at least the
# 1960's. I know of one Han, now over 50, who grew up in the surrounding
# countryside and used Xinjiang time as a child.
#
# 6. Likewise for Kashgar and the rest of south Xinjiang I don't know of any
# start date for Xinjiang time.
#
# Without having access to local historical records, nor the ability to legally
# publish them, I would go with October 1, 1949, when Xinjiang became the Uyghur
# Autonomous Region under the PRC. (Before that Uyghurs, of course, would also
# not be using Beijing time, but some local time.)

# From David Cochrane (2014-03-26):
# Just a confirmation that Ürümqi time was implemented in Ürümqi on 1 Feb 1986:
# https://content.time.com/time/magazine/article/0,9171,960684,00.html

# From Luther Ma (2014-04-22):
# I have interviewed numerous people of various nationalities and from
# different localities in Xinjiang and can confirm the information in Guo's
# report regarding Xinjiang, as well as the Time article reference by David
# Cochrane.  Whether officially recognized or not (and both are officially
# recognized), two separate times have been in use in Xinjiang since at least
# the Cultural Revolution: Xinjiang Time (XJT), aka Ürümqi Time or local time;
# and Beijing Time.  There is no confusion in Xinjiang as to which name refers
# to which time. Both are widely used in the province, although in some
# population groups might be use one to the exclusion of the other.  The only
# problem is that computers and smart phones list Ürümqi (or Kashgar) as
# having the same time as Beijing.

# From Paul Eggert (2014-06-30):
# In the early days of the PRC, Tibet was given its own time zone (UT +06)
# but this was withdrawn in 1959 and never reinstated; see Tubten Khétsun,
# Memories of life in Lhasa under Chinese Rule, Columbia U Press, ISBN
# 978-0231142861 (2008), translator's introduction by Matthew Akester, p x.
# As this is before our 1970 cutoff, Tibet doesn't need a separate zone.
#
# Xinjiang Time is well-documented as being officially recognized.  E.g., see
# "The Working-Calendar for The Xinjiang Uygur Autonomous Region Government"
# <http://www.sinkiang.gov.cn/service/ourworking/> (2014-04-22).
# Unfortunately, we have no good records of time in Xinjiang before 1986.
# During the 20th century parts of Xinjiang were ruled by the Qing dynasty,
# the Republic of China, various warlords, the First and Second East Turkestan
# Republics, the Soviet Union, the Kuomintang, and the People's Republic of
# China, and tracking down all these organizations' timekeeping rules would be
# quite a trick.  Approximate this lost history by a transition from LMT to
# UT +06 at the start of 1928, the year of accession of the warlord Jin Shuren,
# which happens to be the date given by Shanks & Pottenger (no doubt as a
# guess) as the transition from LMT.  Ignore the usage of +08 before
# 1986-02-01 under the theory that the transition date to +08 is unknown and
# that the sort of users who prefer Asia/Urumqi now typically ignored the
# +08 mandate back then.

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
# Beijing time, used throughout China; represented by Shanghai.
		#STDOFF	8:05:43.2
Zone	Asia/Shanghai	8:05:43	-	LMT	1901
			8:00	Shang	C%sT	1949 May 28
			8:00	PRC	C%sT
# Xinjiang time, used by many in western China; represented by Ürümqi / Ürümchi
# / Wulumuqi.  (Please use Asia/Shanghai if you prefer Beijing time.)
Zone	Asia/Urumqi	5:50:20	-	LMT	1928
			6:00	-	%z

# Hong Kong

# Milne gives 7:36:41.7.

# From Lee Yiu Chung (2009-10-24):
# I found there are some mistakes for the...DST rule for Hong
# Kong. [According] to the DST record from Hong Kong Observatory (actually,
# it is not [an] observatory, but the official meteorological agency of HK,
# and also serves as the official timing agency), there are some missing
# and incorrect rules. Although the exact switch over time is missing, I
# think 3:30 is correct.

# From Phake Nick (2018-10-27):
# According to Singaporean newspaper
# http://eresources.nlb.gov.sg/newspapers/Digitised/Article/singfreepresswk19041102-1.2.37
# the day that Hong Kong start using GMT+8 should be Oct 30, 1904.
#
# From Paul Eggert (2018-11-17):
# Hong Kong had a time ball near the Marine Police Station, Tsim Sha Tsui.
# "The ball was raised manually each day and dropped at exactly 1pm
# (except on Sundays and Government holidays)."
# Dyson AD. From Time Ball to Atomic Clock. Hong Kong Government. 1983.
# <https://www.hko.gov.hk/publica/gen_pub/timeball_atomic_clock.pdf>
# "From 1904 October 30 the time-ball at Hong Kong has been dropped by order
# of the Governor of the Colony at 17h 0m 0s G.M.T., which is 23m 18s.14 in
# advance of 1h 0m 0s of Hong Kong mean time."
# Hollis HP. Universal Time, Longitudes, and Geodesy. Mon Not R Astron Soc.
# 1905-02-10;65(4):405-6. https://doi.org/10.1093/mnras/65.4.382
#
# From Joseph Myers (2018-11-18):
# An astronomer before 1925 referring to GMT would have been using the old
# astronomical convention where the day started at noon, not midnight.
#
# From Steve Allen (2018-11-17):
# Meteorological Observations made at the Hongkong Observatory in the year 1904
# page 4 <https://books.google.com/books?id=kgw5AQAAMAAJ&pg=RA4-PA4>
# ... the log of drop times in Table II shows that on Sunday 1904-10-30 the
# ball was dropped.  So that looks like a special case drop for the sake
# of broadcasting the new local time.
#
# From Phake Nick (2018-11-18):
# According to The Hong Kong Weekly Press, 1904-10-29, p.324, the
# governor of Hong Kong at the time stated that "We are further desired to
# make it known that the change will be effected by firing the gun and by the
# dropping of the Ball at 23min. 18sec. before one."
# From Paul Eggert (2018-11-18):
# See <https://mmis.hkpl.gov.hk> for this; unfortunately Flash is required.

# From Phake Nick (2018-10-26):
# I went to check microfilm records stored at Hong Kong Public Library....
# on September 30 1941, according to Ta Kung Pao (Hong Kong edition), it was
# stated that fallback would occur on the next day (the 1st)'s "03:00 am (Hong
# Kong Time 04:00 am)" and the clock will fall back for a half hour. (03:00
# probably refer to the time commonly used in mainland China at the time given
# the paper's background) ... the sunrise/sunset time given by South China
# Morning Post for October 1st was indeed moved by half an hour compares to
# before.  After that, in December, the battle to capture Hong Kong started and
# the library doesn't seems to have any record stored about press during that
# period of time.  Some media resumed publication soon after that within the
# same month, but there were not much information about time there.  Later they
# started including a radio program guide when they restored radio service,
# explicitly mentioning it use Tokyo standard time, and later added a note
# saying it's half an hour ahead of the old Hong Kong standard time, and it
# also seems to indicate that Hong Kong was not using GMT+8 when it was
# captured by Japan.
#
# Image of related sections on newspaper:
# * 1941-09-30, Ta Kung Pao (Hong Kong), "Winter Time start tomorrow".
#   https://i.imgur.com/6waY51Z.jpg (Chinese)
# * 1941-09-29, South China Morning Post, Information on sunrise/sunset
#   time and other things for September 30 and October 1.
#   https://i.imgur.com/kCiUR78.jpg
# * 1942-02-05. The Hong Kong News, Radio Program Guide.
#   https://i.imgur.com/eVvDMzS.jpg
# * 1941-06-14. Hong Kong Daily Press, Daylight Saving from 3am Tomorrow.
#   https://i.imgur.com/05KkvtC.png
# * 1941-09-30, Hong Kong Daily Press, Winter Time Warning.
#   https://i.imgur.com/dge4kFJ.png

# From Paul Eggert (2019-07-11):
# "Hong Kong winter time" is considered to be daylight saving.
# "Hong Kong had adopted daylight saving on June 15 as a wartime measure,
# clocks moving forward one hour until October 1, when they would be put back
# by just half an hour for 'Hong Kong Winter time', so that daylight saving
# operated year round." -- Low Z. The longest day: when wartime Hong Kong
# introduced daylight saving. South China Morning Post. 2019-06-28.
# https://www.scmp.com/magazines/post-magazine/short-reads/article/3016281/longest-day-when-wartime-hong-kong-introduced

# From P Chan (2018-12-31):
# * According to the Hong Kong Daylight-Saving Regulations, 1941, the
#   1941 spring-forward transition was at 03:00.
#	http://sunzi.lib.hku.hk/hkgro/view/g1941/304271.pdf
#	http://sunzi.lib.hku.hk/hkgro/view/g1941/305516.pdf
# * According to some articles from South China Morning Post, +08 was
#   resumed on 1945-11-18 at 02:00.
#	https://i.imgur.com/M2IsZ3c.png
#	https://i.imgur.com/iOPqrVo.png
#	https://i.imgur.com/fffcGDs.png
# * Some newspapers ... said the 1946 spring-forward transition was on
#   04-21 at 00:00.  The Kung Sheung Evening News 1946-04-20 (Chinese)
#	https://i.imgur.com/ZSzent0.png
#	https://mmis.hkpl.gov.hk///c/portal/cover?c=QF757YsWv5%2FH7zGe%2FKF%2BFLYsuqGhRBfe p.4
#   The Kung Sheung Daily News 1946-04-21 (Chinese)
#	https://i.imgur.com/7ecmRlcm.png
#	https://mmis.hkpl.gov.hk///c/portal/cover?c=QF757YsWv5%2BQBGt1%2BwUj5qG2GqtwR3Wh p.4
# * According to the Summer Time Ordinance (1946), the fallback
#   transitions between 1946 and 1952 were at 03:30 Standard Time (+08)
#	http://oelawhk.lib.hku.hk/archive/files/bb74b06a74d5294620a15de560ab33c6.pdf
# * Some other laws and regulations related to DST from 1953 to 1979
#   Summer Time Ordinance 1953
#	https://i.imgur.com/IOlJMav.jpg
#   Summer Time (Amendment) Ordinance 1965
#	https://i.imgur.com/8rofeLa.jpg
#   Interpretation and General Clauses Ordinance (1966)
#	https://i.imgur.com/joy3msj.jpg
#   Emergency (Summer Time) Regulation 1973 <https://i.imgur.com/OpRWrKz.jpg>
#   Interpretation and General Clauses (Amendment) Ordinance 1977
#	https://i.imgur.com/RaNqnc4.jpg
#   Resolution of the Legislative Council passed on 9 May 1979
#	https://www.legco.gov.hk/yr78-79/english/lc_sitg/hansard/h790509.pdf#page=39

# From Paul Eggert (2020-04-15):
# Here are the dates given at
# https://www.hko.gov.hk/en/gts/time/Summertime.htm
# as of 2020-02-10:
# Year        Period
# 1941        15 Jun to 30 Sep
# 1942        Whole year
# 1943        Whole year
# 1944        Whole year
# 1945        Whole year
# 1946        20 Apr to 1 Dec
# 1947        13 Apr to 30 Nov
# 1948        2 May to 31 Oct
# 1949        3 Apr to 30 Oct
# 1950        2 Apr to 29 Oct
# 1951        1 Apr to 28 Oct
# 1952        6 Apr to 2 Nov
# 1953        5 Apr to 1 Nov
# 1954        21 Mar to 31 Oct
# 1955        20 Mar to 6 Nov
# 1956        18 Mar to 4 Nov
# 1957        24 Mar to 3 Nov
# 1958        23 Mar to 2 Nov
# 1959        22 Mar to 1 Nov
# 1960        20 Mar to 6 Nov
# 1961        19 Mar to 5 Nov
# 1962        18 Mar to 4 Nov
# 1963        24 Mar to 3 Nov
# 1964        22 Mar to 1 Nov
# 1965        18 Apr to 17 Oct
# 1966        17 Apr to 16 Oct
# 1967        16 Apr to 22 Oct
# 1968        21 Apr to 20 Oct
# 1969        20 Apr to 19 Oct
# 1970        19 Apr to 18 Oct
# 1971        18 Apr to 17 Oct
# 1972        16 Apr to 22 Oct
# 1973        22 Apr to 21 Oct
# 1973/74     30 Dec 73 to 20 Oct 74
# 1975        20 Apr to 19 Oct
# 1976        18 Apr to 17 Oct
# 1977        Nil
# 1978        Nil
# 1979        13 May to 21 Oct
# 1980 to Now Nil
# The page does not give times of day for transitions,
# or dates for the 1942 and 1945 transitions.
# The Japanese occupation of Hong Kong began 1941-12-25.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	HK	1946	only	-	Apr	21	0:00	1:00	S
Rule	HK	1946	only	-	Dec	1	3:30s	0	-
Rule	HK	1947	only	-	Apr	13	3:30s	1:00	S
Rule	HK	1947	only	-	Nov	30	3:30s	0	-
Rule	HK	1948	only	-	May	2	3:30s	1:00	S
Rule	HK	1948	1952	-	Oct	Sun>=28	3:30s	0	-
Rule	HK	1949	1953	-	Apr	Sun>=1	3:30	1:00	S
Rule	HK	1953	1964	-	Oct	Sun>=31	3:30	0	-
Rule	HK	1954	1964	-	Mar	Sun>=18	3:30	1:00	S
Rule	HK	1965	1976	-	Apr	Sun>=16	3:30	1:00	S
Rule	HK	1965	1976	-	Oct	Sun>=16	3:30	0	-
Rule	HK	1973	only	-	Dec	30	3:30	1:00	S
Rule	HK	1979	only	-	May	13	3:30	1:00	S
Rule	HK	1979	only	-	Oct	21	3:30	0	-
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
		#STDOFF	7:36:41.7
Zone	Asia/Hong_Kong	7:36:42 -	LMT	1904 Oct 29 17:00u
			8:00	-	HKT	1941 Jun 15  3:00
			8:00	1:00	HKST	1941 Oct  1  4:00
			8:00	0:30	HKWT	1941 Dec 25
			9:00	-	JST	1945 Nov 18  2:00
			8:00	HK	HK%sT

###############################################################################

# Taiwan

# From smallufo (2010-04-03):
# According to Taiwan's CWB [Central Weather Bureau],
# http://www.cwb.gov.tw/V6/astronomy/cdata/summert.htm
# Taipei has DST in 1979 between July 1st and Sep 30.

# From Yu-Cheng Chuang (2013-07-12):
# On Dec 28, 1895, the Meiji Emperor announced Ordinance No. 167 of
# Meiji Year 28 "The clause about standard time", mentioned that
# Taiwan and Penghu Islands, as well as Yaeyama and Miyako Islands
# (both in Okinawa) adopt the Western Standard Time which is based on
# 120E. The adoption began from Jan 1, 1896. The original text can be
# found on Wikisource:
# https://ja.wikisource.org/wiki/標準時ニ關スル件_(公布時)
# ... This could be the first adoption of time zone in Taiwan, because
# during the Qing Dynasty, it seems that there was no time zone
# declared officially.
#
# Later, in the beginning of World War II, on Sep 25, 1937, the Showa
# Emperor announced Ordinance No. 529 of Showa Year 12 "The clause of
# revision in the ordinance No. 167 of Meiji year 28 about standard
# time", in which abolished the adoption of Western Standard Time in
# western islands (listed above), which means the whole Japan
# territory, including later occupations, adopt Japan Central Time
# (UT+9). The adoption began on Oct 1, 1937. The original text can
# be found on Wikisource:
# https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件
#
# That is, the time zone of Taipei switched to UT+9 on Oct 1, 1937.

# From Yu-Cheng Chuang (2014-07-02):
# I've found more evidence about when the time zone was switched from UT+9
# back to UT+8 after WW2.  I believe it was on Sep 21, 1945.  In a document
# during Japanese era [1] in which the officer told the staff to change time
# zone back to Western Standard Time (UT+8) on Sep 21.  And in another
# history page of National Cheng Kung University [2], on Sep 21 there is a
# note "from today, switch back to Western Standard Time".  From these two
# materials, I believe that the time zone change happened on Sep 21.  And
# today I have found another monthly journal called "The Astronomical Herald"
# from The Astronomical Society of Japan [3] in which it mentioned the fact
# that:
#
# 1. Standard Time of the Country (Japan) was adopted on Jan 1, 1888, using
# the time at 135E (GMT+9)
#
# 2. Standard Time of the Country was renamed to Central Standard Time, on Jan
# 1, 1898, and on the same day, the new territories Taiwan and Penghu islands,
# as well as Yaeyama and Miyako islands, adopted a new time zone called
# Western Standard Time, which is in GMT+8.
#
# 3. Western Standard Time was deprecated on Sep 30, 1937. From then all the
# territories of Japan adopted the same time zone, which is Central Standard
# Time.
#
# [1] Academica Historica, Taiwan:
# http://163.29.208.22:8080/govsaleShowImage/connect_img.php?s=00101738900090036&e=00101738900090037
# [2] Nat'l Cheng Kung University 70th Anniversary Special Site:
# http://www.ncku.edu.tw/~ncku70/menu/001/01_01.htm
# [3] Yukio Niimi, The Standard Time in Japan (1997), p.475:
# http://www.asj.or.jp/geppou/archive_open/1997/pdf/19971001c.pdf

# Yu-Cheng Chuang (2014-07-03):
# I finally have found the real official gazette about changing back to
# Western Standard Time on Sep 21 in Taiwan.  It's Taiwan Governor-General
# Bulletin No. 386 in Showa 20 years (1945), published on Sep 19, 1945. [1] ...
# [It] abolishes Bulletin No. 207 in Showa 12 years (1937), which is a local
# bulletin in Taiwan for that Ordinance No. 529. It also mentioned that 1am on
# Sep 21, 1945 will be 12am on Sep 21.  I think this bulletin is much more
# official than the one I mentioned in my first mail, because it's from the
# top-level government in Taiwan. If you're going to quote any resource, this
# would be a good one.
# [1] Taiwan Governor-General Gazette, No. 1018, Sep 19, 1945:
# http://db2.th.gov.tw/db2/view/viewImg.php?imgcode=0072031018a&num=19&bgn=019&end=019&otherImg=&type=gener

# From Yu-Cheng Chuang (2014-07-02):
# In 1946, DST in Taiwan was from May 15 and ended on Sep 30. The info from
# Central Weather Bureau website was not correct.
#
# Original Bulletin:
# http://subtpg.tpg.gov.tw/og/image2.asp?f=03502F0AKM1AF
# http://subtpg.tpg.gov.tw/og/image2.asp?f=0350300AKM1B0 (cont.)
#
# In 1947, DST in Taiwan was expanded to Oct 31. There is a backup of that
# telegram announcement from Taiwan Province Government:
#
# http://subtpg.tpg.gov.tw/og/image2.asp?f=0360310AKZ431
#
# Here is a brief translation:
#
#   The Summer Time this year is adopted from midnight Apr 15 until Sep 20
#   midnight. To save (energy?) consumption, we're expanding Summer Time
#   adoption till Oct 31 midnight.
#
# The Central Weather Bureau website didn't mention that, however it can
# be found from historical government announcement database.

# From Paul Eggert (2014-07-03):
# As per Yu-Cheng Chuang, say that Taiwan was at UT +09 from 1937-10-01
# until 1945-09-21 at 01:00, overriding Shanks & Pottenger.
# Likewise, use Yu-Cheng Chuang's data for DST in Taiwan.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Taiwan	1946	only	-	May	15	0:00	1:00	D
Rule	Taiwan	1946	only	-	Oct	1	0:00	0	S
Rule	Taiwan	1947	only	-	Apr	15	0:00	1:00	D
Rule	Taiwan	1947	only	-	Nov	1	0:00	0	S
Rule	Taiwan	1948	1951	-	May	1	0:00	1:00	D
Rule	Taiwan	1948	1951	-	Oct	1	0:00	0	S
Rule	Taiwan	1952	only	-	Mar	1	0:00	1:00	D
Rule	Taiwan	1952	1954	-	Nov	1	0:00	0	S
Rule	Taiwan	1953	1959	-	Apr	1	0:00	1:00	D
Rule	Taiwan	1955	1961	-	Oct	1	0:00	0	S
Rule	Taiwan	1960	1961	-	Jun	1	0:00	1:00	D
Rule	Taiwan	1974	1975	-	Apr	1	0:00	1:00	D
Rule	Taiwan	1974	1975	-	Oct	1	0:00	0	S
Rule	Taiwan	1979	only	-	Jul	1	0:00	1:00	D
Rule	Taiwan	1979	only	-	Oct	1	0:00	0	S

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
# Taipei or Taibei or T'ai-pei
Zone	Asia/Taipei	8:06:00 -	LMT	1896 Jan  1
			8:00	-	CST	1937 Oct  1
			9:00	-	JST	1945 Sep 21  1:00
			8:00	Taiwan	C%sT

# Macau (Macao, Aomen)
#
# From P Chan (2018-05-10):
# * LegisMac
#   http://legismac.safp.gov.mo/legismac/descqry/Descqry.jsf?lang=pt
#   A database for searching titles of legal documents of Macau in
#   Chinese and Portuguese.  The term "HORÁRIO DE VERÃO" can be used for
#   searching decrees about summer time.
# * Archives of Macao
#   http://www.archives.gov.mo/en/bo/
#   It contains images of old official gazettes.
# * The Macao Meteorological and Geophysical Bureau have a page listing the
#   summer time history.  But it is not complete and has some mistakes.
#   http://www.smg.gov.mo/smg/geophysics/e_t_Summer%20Time.htm
# Macau adopted GMT+8 on 30 Oct 1904 to follow Hong Kong.  Clocks were
# advanced by 25 minutes and 50 seconds.  Which means the LMT used was
# +7:34:10.  As stated in the "Portaria No. 204" dated 21 October 1904
# and published in the Official Gazette on 29 October 1904.
# http://igallery.icm.gov.mo/Images/Archives/BO/MO_AH_PUB_BO_1904_10/MO_AH_PUB_BO_1904_10_00025_Grey.JPG
#
# Therefore the 1911 decree of Portugal did not change time in Macau.
#
# From LegisMac, here is a list of decrees that changed the time ...
# [Decree Gazette-no. date; titles omitted in this quotation]
#	DIL 732 BOCM 51 1941.12.20
#	DIL 764 BOCM 9S 1942.04.30
#	DIL 781 BOCM 21 1942.10.10
#	PT 3434 BOCM 8S 1943.04.17
#	PT 3504 BOCM 20 1943.09.25
#	PT 3843 BOCM 39 1945.09.29
#	PT 3961 BOCM 17 1946.04.27
#	PT 4026 BOCM 39 1946.09.28
#	PT 4153 BOCM 16 1947.04.10
#	PT 4271 BOCM 48 1947.11.29
#	PT 4374 BOCM 18 1948.05.01
#	PT 4465 BOCM 44 1948.10.30
#	PT 4590 BOCM 14 1949.04.02
#	PT 4666 BOCM 44 1949.10.29
#	PT 4771 BOCM 12 1950.03.25
#	PT 4838 BOCM 43 1950.10.28
#	PT 4946 BOCM 12 1951.03.24
#	PT 5025 BO 43 1951.10.27
#	PT 5149 BO 14 1952.04.05
#	PT 5251 BO 43 1952.10.25
#	PT 5366 BO 13 1953.03.28
#	PT 5444 BO 44 1953.10.31
#	PT 5540 BO 12 1954.03.20
#	PT 5589 BO 44 1954.10.30
#	PT 5676 BO 12 1955.03.19
#	PT 5739 BO 45 1955.11.05
#	PT 5823 BO 11 1956.03.17
#	PT 5891 BO 44 1956.11.03
#	PT 5981 BO 12 1957.03.23
#	PT 6064 BO 43 1957.10.26
#	PT 6172 BO 12 1958.03.22
#	PT 6243 BO 43 1958.10.25
#	PT 6341 BO 12 1959.03.21
#	PT 6411 BO 43 1959.10.24
#	PT 6514 BO 11 1960.03.12
#	PT 6584 BO 44 1960.10.29
#	PT 6721 BO 10 1961.03.11
#	PT 6815 BO 43 1961.10.28
#	PT 6947 BO 10 1962.03.10
#	PT 7080 BO 43 1962.10.27
#	PT 7218 BO 12 1963.03.23
#	PT 7340 BO 43 1963.10.26
#	PT 7491 BO 11 1964.03.14
#	PT 7664 BO 43 1964.10.24
#	PT 7846 BO 15 1965.04.10
#	PT 7979 BO 42 1965.10.16
#	PT 8146 BO 15 1966.04.09
#	PT 8252 BO 41 1966.10.08
#	PT 8429 BO 15 1967.04.15
#	PT 8540 BO 41 1967.10.14
#	PT 8735 BO 15 1968.04.13
#	PT 8860 BO 41 1968.10.12
#	PT 9035 BO 16 1969.04.19
#	PT 9156 BO 42 1969.10.18
#	PT 9328 BO 15 1970.04.11
#	PT 9418 BO 41 1970.10.10
#	PT 9587 BO 14 1971.04.03
#	PT 9702 BO 41 1971.10.09
#	PT 38-A/72 BO 14 1972.04.01
#	PT 126-A/72 BO 41 1972.10.07
#	PT 61/73 BO 14 1973.04.07
#	PT 182/73 BO 40 1973.10.06
#	PT 282/73 BO 51 1973.12.22
#	PT 177/74 BO 41 1974.10.12
#	PT 51/75 BO 15 1975.04.12
#	PT 173/75 BO 41 1975.10.11
#	PT 67/76/M BO 14 1976.04.03
#	PT 169/76/M BO 41 1976.10.09
#	PT 78/79/M BO 19 1979.05.12
#	PT 166/79/M BO 42 1979.10.20
# Note that DIL 732 does not belong to "HORÁRIO DE VERÃO" according to
# LegisMac.... Note that between 1942 and 1945, the time switched
# between GMT+9 and GMT+10.  Also in 1965 and 1965 the DST ended at 2:30am.

# From Paul Eggert (2018-05-10):
# The 1904 decree says that Macau changed from the meridian of
# Fortaleza do Monte, presumably the basis for the 7:34:10 for LMT.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Macau	1942	1943	-	Apr	30	23:00	1:00	-
Rule	Macau	1942	only	-	Nov	17	23:00	0	-
Rule	Macau	1943	only	-	Sep	30	23:00	0	S
Rule	Macau	1946	only	-	Apr	30	23:00s	1:00	D
Rule	Macau	1946	only	-	Sep	30	23:00s	0	S
Rule	Macau	1947	only	-	Apr	19	23:00s	1:00	D
Rule	Macau	1947	only	-	Nov	30	23:00s	0	S
Rule	Macau	1948	only	-	May	 2	23:00s	1:00	D
Rule	Macau	1948	only	-	Oct	31	23:00s	0	S
Rule	Macau	1949	1950	-	Apr	Sat>=1	23:00s	1:00	D
Rule	Macau	1949	1950	-	Oct	lastSat	23:00s	0	S
Rule	Macau	1951	only	-	Mar	31	23:00s	1:00	D
Rule	Macau	1951	only	-	Oct	28	23:00s	0	S
Rule	Macau	1952	1953	-	Apr	Sat>=1	23:00s	1:00	D
Rule	Macau	1952	only	-	Nov	 1	23:00s	0	S
Rule	Macau	1953	1954	-	Oct	lastSat	23:00s	0	S
Rule	Macau	1954	1956	-	Mar	Sat>=17	23:00s	1:00	D
Rule	Macau	1955	only	-	Nov	 5	23:00s	0	S
Rule	Macau	1956	1964	-	Nov	Sun>=1	03:30	0	S
Rule	Macau	1957	1964	-	Mar	Sun>=18	03:30	1:00	D
Rule	Macau	1965	1973	-	Apr	Sun>=16	03:30	1:00	D
Rule	Macau	1965	1966	-	Oct	Sun>=16	02:30	0	S
Rule	Macau	1967	1976	-	Oct	Sun>=16	03:30	0	S
Rule	Macau	1973	only	-	Dec	30	03:30	1:00	D
Rule	Macau	1975	1976	-	Apr	Sun>=16	03:30	1:00	D
Rule	Macau	1979	only	-	May	13	03:30	1:00	D
Rule	Macau	1979	only	-	Oct	Sun>=16	03:30	0	S

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Macau	7:34:10 -	LMT	1904 Oct 30
			8:00	-	CST	1941 Dec 21 23:00
			9:00	Macau	%z	1945 Sep 30 24:00
			8:00	Macau	C%sT


###############################################################################

# Cyprus

# Milne says the Eastern Telegraph Company used 2:14:00.  Stick with LMT.
# IATA SSIM (1998-09) has Cyprus using EU rules for the first time.

# From Paul Eggert (2016-09-09):
# Yesterday's Cyprus Mail reports that Northern Cyprus followed Turkey's
# lead and switched from +02/+03 to +03 year-round.
# http://cyprus-mail.com/2016/09/08/two-time-zones-cyprus-turkey-will-not-turn-clocks-back-next-month/
#
# From Even Scharning (2016-10-31):
# Looks like the time zone split in Cyprus went through last night.
# http://cyprus-mail.com/2016/10/30/cyprus-new-division-two-time-zones-now-reality/

# From Paul Eggert (2017-10-18):
# Northern Cyprus will reinstate winter time on October 29, thus
# staying in sync with the rest of Cyprus.  See: Anastasiou A.
# Cyprus to remain united in time.  Cyprus Mail 2017-10-17.
# https://cyprus-mail.com/2017/10/17/cyprus-remain-united-time/

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Cyprus	1975	only	-	Apr	13	0:00	1:00	S
Rule	Cyprus	1975	only	-	Oct	12	0:00	0	-
Rule	Cyprus	1976	only	-	May	15	0:00	1:00	S
Rule	Cyprus	1976	only	-	Oct	11	0:00	0	-
Rule	Cyprus	1977	1980	-	Apr	Sun>=1	0:00	1:00	S
Rule	Cyprus	1977	only	-	Sep	25	0:00	0	-
Rule	Cyprus	1978	only	-	Oct	2	0:00	0	-
Rule	Cyprus	1979	1997	-	Sep	lastSun	0:00	0	-
Rule	Cyprus	1981	1998	-	Mar	lastSun	0:00	1:00	S
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Nicosia	2:13:28 -	LMT	1921 Nov 14
			2:00	Cyprus	EE%sT	1998 Sep
			2:00	EUAsia	EE%sT
Zone	Asia/Famagusta	2:15:48	-	LMT	1921 Nov 14
			2:00	Cyprus	EE%sT	1998 Sep
			2:00	EUAsia	EE%sT	2016 Sep  8
			3:00	-	%z	2017 Oct 29 1:00u
			2:00	EUAsia	EE%sT

# Georgia
# From Paul Eggert (1994-11-19):
# Today's _Economist_ (p 60) reports that Georgia moved its clocks forward
# an hour recently, due to a law proposed by Zurab Murvanidze,
# an MP who went on a hunger strike for 11 days to force discussion about it!
# We have no details, but we'll guess they didn't move the clocks back in fall.
#
# From Mathew Englander, quoting AP (1996-10-23 13:05-04):
# Instead of putting back clocks at the end of October, Georgia
# will stay on daylight savings time this winter to save energy,
# President Eduard Shevardnadze decreed Wednesday.
#
# From the BBC via Joseph S. Myers (2004-06-27):
#
# Georgia moved closer to Western Europe on Sunday...  The former Soviet
# republic has changed its time zone back to that of Moscow.  As a result it
# is now just four hours ahead of Greenwich Mean Time, rather than five hours
# ahead.  The switch was decreed by the pro-Western president of Georgia,
# Mikheil Saakashvili, who said the change was partly prompted by the process
# of integration into Europe.

# From Teimuraz Abashidze (2005-11-07):
# Government of Georgia ... decided to NOT CHANGE daylight savings time on
# [Oct.] 30, as it was done before during last more than 10 years.
# Currently, we are in fact GMT +4:00, as before 30 October it was GMT
# +3:00.... The problem is, there is NO FORMAL LAW or governmental document
# about it.  As far as I can find, I was told, that there is no document,
# because we just DIDN'T ISSUE document about switching to winter time....
# I don't know what can be done, especially knowing that some years ago our
# DST rules where changed THREE TIMES during one month.

# Milne 1899 says Tbilisi (Tiflis) time was 2:59:05.7.
# Byalokoz 1919 says Georgia was 2:59:11.
# Go with Byalokoz.

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Tbilisi	2:59:11 -	LMT	1880
			2:59:11	-	TBMT	1924 May  2 # Tbilisi Mean Time
			3:00	-	%z	1957 Mar
			4:00 RussiaAsia %z	1991 Mar 31  2:00s
			3:00 RussiaAsia %z	1992
			3:00 E-EurAsia	%z	1994 Sep lastSun
			4:00 E-EurAsia	%z	1996 Oct lastSun
			4:00	1:00	%z	1997 Mar lastSun
			4:00 E-EurAsia	%z	2004 Jun 27
			3:00 RussiaAsia	%z	2005 Mar lastSun  2:00
			4:00	-	%z

# East Timor

# From Tim Parenti (2024-07-01):
# The 1912-01-01 transition occurred at 00:00 new time, per the 1911-05-24
# Portuguese decree (see Europe/Lisbon).  A provision in article 5(c) of the
# decree prescribed that Timor "will keep counting time in harmony with
# neighboring foreign colonies, [for] as long as they do not adopt the time
# that belongs to them in [the Washington Convention] system."

# See Indonesia for the 1945 transition.

# From João Carrascalão, brother of the former governor of East Timor, in
# East Timor may be late for its millennium
# <https://etan.org/et99c/december/26-31/30ETMAY.htm> (1999-12-26/31):
# Portugal tried to change the time forward in 1974 because the sun
# rises too early but the suggestion raised a lot of problems with the
# Timorese and I still don't think it would work today because it
# conflicts with their way of life.

# From Paul Eggert (2000-12-04):
# We don't have any record of the above attempt.
# Most likely our records are incomplete, but we have no better data.

# From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General
# http://www.hri.org/news/world/undh/2000/00-08-16.undh.html
# (2000-08-16):
# The Cabinet of the East Timor Transition Administration decided
# today to advance East Timor's time by one hour.  The time change,
# which will be permanent, with no seasonal adjustment, will happen at
# midnight on Saturday, September 16.

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Dili	8:22:20 -	LMT	1911 Dec 31 16:00u
			8:00	-	%z	1942 Feb 21 23:00
			9:00	-	%z	1976 May  3
			8:00	-	%z	2000 Sep 17  0:00
			9:00	-	%z

# India

# British astronomer Henry Park Hollis disliked India Standard Time's offset:
# "A new time system has been proposed for India, Further India, and Burmah.
# The scheme suggested is that the times of the meridians 5½ and 6½ hours
# east of Greenwich should be adopted in these territories.  No reason is
# given why hourly meridians five hours and six hours east should not be
# chosen; a plan which would bring the time of India into harmony with
# that of almost the whole of the civilised world."
# Hollis HP. Universal Time, Longitudes, and Geodesy. Mon Not R Astron Soc.
# 1905-02-10;65(4):405-6. https://doi.org/10.1093/mnras/65.4.382

# From Ian P. Beacock, in "A brief history of (modern) time", The Atlantic
# https://www.theatlantic.com/technology/archive/2015/12/the-creation-of-modern-time/421419/
# (2015-12-22):
# In January 1906, several thousand cotton-mill workers rioted on the
# outskirts of Bombay....  They were protesting the proposed abolition of
# local time in favor of Indian Standard Time....  Journalists called this
# dispute the "Battle of the Clocks."  It lasted nearly half a century.

# From Paul Eggert (2017-04-20):
# Good luck trying to nail down old timekeeping records in India.
# "... in the nineteenth century ... Madras Observatory took its magnetic
# measurements on Göttingen time, its meteorological measurements on Madras
# (local) time, dropped its time ball on Greenwich (ocean navigator's) time,
# and distributed civil (local time)." -- Bartky IR. Selling the true time:
# 19th-century timekeeping in america. Stanford U Press (2000), 247 note 19.
# "A more potent cause of resistance to the general adoption of the present
# standard time lies in the fact that it is Madras time.  The citizen of
# Bombay, proud of being 'primus in Indis' and of Calcutta, equally proud of
# his city being the Capital of India, and - for a part of the year - the Seat
# of the Supreme Government, alike look down on Madras, and refuse to change
# the time they are using, for that of what they regard as a benighted
# Presidency; while Madras, having for long given the standard time to the
# rest of India, would resist the adoption of any other Indian standard in its
# place." -- Oldham RD. On Time in India: a suggestion for its improvement.
# Proceedings of the Asiatic Society of Bengal (April 1899), 49-55.
#
# "In 1870 ... Madras time - 'now used by the telegraph and regulated from the
# only government observatory' - was suggested as a standard railway time,
# first to be adopted on the Great Indian Peninsular Railway (GIPR)....
# Calcutta, Bombay, and Karachi, were to be allowed to continue with their
# local time for civil purposes." - Prasad R. Tracks of Change: Railways and
# Everyday Life in Colonial India. Cambridge University Press (2016), 145.
#
# Reed S, Low F. The Indian Year Book 1936-37. Bennett, Coleman, pp 27-8.
# https://archive.org/details/in.ernet.dli.2015.282212
# This lists +052110 as Madras local time used in railways, and says that on
# 1906-01-01 railways and telegraphs in India switched to +0530.  Some
# municipalities retained their former time, and the time in Calcutta
# continued to depend on whether you were at the railway station or at
# government offices.  Government time was at +055320 (according to Shanks) or
# at +0554 (according to the Indian Year Book).  Railway time is more
# appropriate for our purposes, as it was better documented, it is what we do
# elsewhere (e.g., Europe/London before 1880), and after 1906 it was
# consistent in the region now identified by Asia/Kolkata.  So, use railway
# time for 1870-1941.  Shanks is our only (and dubious) source for the
# 1941-1945 data.

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Kolkata	5:53:28 -	LMT	1854 Jun 28 # Kolkata
			5:53:20	-	HMT	1870	    # Howrah Mean Time?
			5:21:10	-	MMT	1906 Jan  1 # Madras local time
			5:30	-	IST	1941 Oct
			5:30	1:00	%z	1942 May 15
			5:30	-	IST	1942 Sep
			5:30	1:00	%z	1945 Oct 15
			5:30	-	IST
# Since 1970 the following are like Asia/Kolkata:
#	Andaman Is
#	Lakshadweep (Laccadive, Minicoy and Amindivi Is)
#	Nicobar Is

# Indonesia
#
# From Paul Eggert (2014-09-06):
# The 1876 Report of the Secretary of the [US] Navy, p 306 says that Batavia
# civil time was 7:07:12.5.
#
# 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
# and Kalimantan Tengah) switching from UTC+8 to UTC+7.
#
# From Paul Eggert (2007-03-10):
# Here is another correction to Shanks & Pottenger.
# JohnTWB writes that Japanese forces did not surrender control in
# Indonesia until 1945-09-01 00:00 at the earliest (in Jakarta) and
# other formal surrender ceremonies were September 9, 11, and 13, plus
# September 12 for the regional surrender to Mountbatten in Singapore.
# These would be the earliest possible times for a change.
# Régimes horaires pour le monde entier, by Henri Le Corre, (Éditions
# Traditionnelles, 1987, Paris) says that Java and Madura switched
# from UT +09 to +07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
# (Hollandia).  For now, assume all Indonesian locations other than Jayapura
# switched on 1945-09-23.
#
# From Paul Eggert (2013-08-11):
# Normally the tz database uses English-language abbreviations, but in
# Indonesia it's typical to use Indonesian-language abbreviations even
# when writing in English.  For example, see the English-language
# summary published by the Time and Frequency Laboratory of the
# Research Center for Calibration, Instrumentation and Metrology,
# Indonesia, <http://time.kim.lipi.go.id/time-eng.php> (2006-09-29).
# The time zone abbreviations and UT offsets are:
#
# WIB  - +07 - Waktu Indonesia Barat (Indonesia western time)
# WITA - +08 - Waktu Indonesia Tengah (Indonesia central time)
# WIT  - +09 - Waktu Indonesia Timur (Indonesia eastern time)
#
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
# Java, Sumatra
		#STDOFF	7:07:12.5
Zone Asia/Jakarta	7:07:12 -	LMT	1867 Aug 10
# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
# but this must be a typo.
			7:07:12	-	BMT	1923 Dec 31 16:40u # Batavia
			7:20	-	%z	1932 Nov
			7:30	-	%z	1942 Mar 23
			9:00	-	%z	1945 Sep 23
			7:30	-	%z	1948 May
			8:00	-	%z	1950 May
			7:30	-	%z	1964
			7:00	-	WIB
# west and central Borneo
Zone Asia/Pontianak	7:17:20	-	LMT	1908 May
			7:17:20	-	PMT	1932 Nov    # Pontianak MT
			7:30	-	%z	1942 Jan 29
			9:00	-	%z	1945 Sep 23
			7:30	-	%z	1948 May
			8:00	-	%z	1950 May
			7:30	-	%z	1964
			8:00	-	WITA	1988 Jan  1
			7:00	-	WIB
# Sulawesi, Lesser Sundas, east and south Borneo
Zone Asia/Makassar	7:57:36 -	LMT	1920
			7:57:36	-	MMT	1932 Nov    # Macassar MT
			8:00	-	%z	1942 Feb  9
			9:00	-	%z	1945 Sep 23
			8:00	-	WITA
# Maluku Islands, West Papua, Papua
Zone Asia/Jayapura	9:22:48 -	LMT	1932 Nov
			9:00	-	%z	1944 Sep  1
			9:30	-	%z	1964
			9:00	-	WIT

# Iran

# From Roozbeh Pournader (2022-05-30):
# Here's an order from the Cabinet to the rest of the government to switch to
# Tehran time, which is mentioned to be already at +03:30:
# https://qavanin.ir/Law/TreeText/180138
# Just in case that goes away, I also saved a copy at archive.org:
# https://web.archive.org/web/20220530111940/https://qavanin.ir/Law/TreeText/180138
# Here's my translation:
#
# "Circular on Matching the Hours of Governmental and Official Circles
# in Provinces
# Approved 1314/03/22 [=1935-06-13]
# According to the ruling of the Honorable Cabinet, it is ordered that from
# now on in all internal provinces of the country, governmental and official
# circles set their time to match Tehran time (three hours and half before
# Greenwich)....
#
# I still haven't found out when Tehran itself switched to +03:30....
#
# From Paul Eggert (2022-06-05):
# Although the above says Tehran was at +03:30 before 1935-06-13, we don't
# know when it switched to +03:30.  For now, use 1935-06-13 as the switch date.
# Although most likely wrong, we have no better info.

# From Roozbeh Pournader (2022-06-01):
# This is from Kayhan newspaper, one of the major Iranian newspapers, from
# March 20, 1978, page 2:
#
# "Pull the clocks 60 minutes forward
# As we informed before, from the fourth day of the month Farvardin of the
# new year [=1978-03-24], clocks will be pulled forward, and people's daily
# work and life program will start one hour earlier than the current program.
# On the 1st day of the month Farvardin of this year [=1977-03-21], they had
# pulled the clocks forward by one hour, but in the month of Mehr
# [=1977-09-23], the clocks were pulled back by 30 minutes.
# In this way, from the 4th day of the month Farvardin, clocks will be ahead
# of the previous years by one hour and a half.
# According to the new program, during the night of 4th of Farvardin, when
# the midnight, meaning 24 o'clock is announced, the hands of the clock must
# be pulled forward by one hour and thus consider midnight 1 o'clock in the
# forenoon."
#
# This implies that in September 1977, when the daylight savings time was
# done with, Iran didn't go back to +03:30, but immediately to +04:00.
#
#
# This is from the major Iranian newspaper Ettela'at, dated [1978-08-03]...,
# page 32. It looks like they decided to get the clocks back to +4:00
# just in time for Ramadan that year:
#
# "Tomorrow Night, Pull the Clocks Back by One Hour
# At 1 o'clock in the forenoon of Saturday 14 Mordad [=1978-08-05], the
# clocks will be pulled one hour back and instead of 1 o'clock in the
# forenoon, Radio Iran will announce 24 o'clock.
# This decision was made in the Cabinet of Ministers meeting of 25 Tir
# [=1978-07-16], [...]
# At the beginning of the year 2537 [=March 1978: Iran was using a different
# year number for a few years then, based on the Coronation of Cyrus the
# Great], the country's official time was pulled forward by one hour and now
# the official time is one hour and a half ahead compared to last year,
# because in Farvardin of last year [=March 1977], the official time was
# pulled forward one hour and this continued until the second half of last
# year [=September 1977] until in the second half of last year the official
# time was pulled back half an hour and that half hour still remains."
#
# This matches the time of the true noon published in the newspapers, as they
# clearly go from +05:00 to +04:00 after that date (which happened during a
# long weekend in Iran).

# From Roozbeh Pournader (2022-05-31):
# [Movahedi S. Cultural preconceptions of time: Can we use operational time
# to meddle in God's Time? Comp Stud Soc Hist. 1985;27(3):385-400]
# https://www.jstor.org/stable/178704
# Here's the quotes from the paper:
# 1. '"Iran's official time keeper moved the clock one hour forward as from
# March 22, 1977 (Farvardin 2, 2536) to make maximum use of daylight and save
# in energy consumption. Thus Iran joined such other countries as Britain in
# observing what is known as 'daylight saving.' The proposal was originally
# put forward by the Ministry of Energy, in no way having any influence on
# observing religious ceremonies. Moving time one hour forward in summer
# means that at 11:00 o'clock on March 21, the official time was set as
# midnight March 22. Then September 24 will actually begin one hour later
# than the end of September 23 [...]." Iran's time base thus continued to be
# Greenwich Mean Time plus three and one-half hours (plus four and one-half
# hours in summer).'
#
# The article sources this from Iran Almanac and Book of Facts, 1977, Tehran:
# Echo of Iran, which is on Google Books at
# https://www.google.com/books/edition/Iran_Almanac_and_Book_of_Facts/9ybVAAAAMAAJ.
# (I confirmed it by searching for snippets.)
#
# 2. "After the fall of the shah, the revolutionary government returned to
# daylight-saving time (DST) on 26 May 1979."
#
# This seems to have been announced just one day in advance, on 25 May 1979.
#
# The change in 1977 clearly seems to be the first daylight savings effort in
# Iran. But the article doesn't mention what happened in 1978 (which was
# still during the shah's government), or how things continued in 1979
# onwards (which was during the Islamic Republic).

# From Francis Santoni (2022-06-01):
# for Iran and 1977 the effective change is only 20 October
# (UIT No. 143 17.XI.1977) and not 23 September (UIT No. 141 13.IX.1977).
# UIT is the Operational Bulletin of International Telecommunication Union.

# From Roozbeh Pournader (2025-03-18):
# ... the exact time of Iran's transition from +0400 to +0330 ... was Friday
# 1357/8/19 AP=1978-11-10. Here's a newspaper clip from the Ettela'at
# newspaper, dated 1357/8/14 AP=1978-11-05, translated from Persian
# (at https://w.wiki/DUEY):
#	Following the government's decision about returning the official time
#	to the previous status, the spokesperson for the Ministry of Energy
#	announced today: At the hour 24 of Friday 19th of Aban (=1978-11-10),
#	the country's time will be pulled back half an hour.
#
# From Roozbeh Pournader (2003-03-15):
# This is an English translation of what I just found (originally in Persian).
# The Gregorian dates in brackets are mine:
#
#	Official Newspaper No. 13548-1370/6/25 [1991-09-16]
#	No. 16760/T233 H				1370/6/10 [1991-09-01]
#
#	The Rule About Change of the Official Time of the Country
#
#	The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
#	based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
#	of the Country's Organization for Official and Employment Affairs,
#	and referring to the law for equating the working hours of workers
#	and officers in the whole country dated 1359/4/23 [1980-07-14], and
#	for synchronizing the official times of the country, agreed that:
#
#	The official time of the country will should move forward one hour
#	at the 24[:00] hours of the first day of Farvardin and should return
#	to its previous state at the 24[:00] hours of the 30th day of
#	Shahrivar.
#
#	First Deputy to the President - Hassan Habibi
#
# From personal experience, that agrees with what has been followed
# for at least the last 5 years.  Before that, for a few years, the
# date used was the first Thursday night of Farvardin and the last
# Thursday night of Shahrivar, but I can't give exact dates....
#
# From Roozbeh Pournader (2005-04-05):
# The text of the Iranian law, in effect since 1925, clearly mentions
# that the true solar year is the measure, and there is no arithmetic
# leap year calculation involved.  There has never been any serious
# plan to change that law....
#
# From Paul Eggert (2022-06-30):
# Go with Pournader for 1935 through spring 1979, and for timestamps
# after August 1991; go with with Shanks & Pottenger for other timestamps.
# Go with Santoni's citation of the UIT for fall 1977, as 20 October 1977
# is 28 Mehr 1356, consistent with the "Mehr" in Pournader's source.
# Assume that the UIT's "1930" is UTC, i.e., 24:00 local time.
#
# From Oscar van Vlijmen (2005-03-30), writing about future
# discrepancies between cal-persia and the Iranian calendar:
# For 2091 solar-longitude-after yields 2091-03-20 08:40:07.7 UT for
# the vernal equinox and that gets so close to 12:00 some local
# Iranian time that the definition of the correct location needs to be
# known exactly, amongst other factors.  2157 is even closer:
# 2157-03-20 08:37:15.5 UT.  But the Gregorian year 2025 should give
# no interpretation problem whatsoever.  By the way, another instant
# in the near future where there will be a discrepancy between
# arithmetical and astronomical Iranian calendars will be in 2058:
# vernal equinox on 2058-03-20 09:03:05.9 UT.  The Java version of
# Reingold's/Dershowitz' calculator gives correctly the Gregorian date
# 2058-03-21 for 1 Farvardin 1437 (astronomical).
#
# 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
#
# From Reuters (2007-09-16), with a heads-up from Jesper Nørgaard Welen:
# ... the Guardian Council ... approved a law on Sunday to re-introduce
# daylight saving time ...
# https://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
#
# From Roozbeh Pournader (2007-11-05):
# This is quoted from Official Gazette of the Islamic Republic of
# Iran, Volume 63, No. 18242, dated Tuesday 1386/6/24
# [2007-10-16]. I am doing the best translation I can:...
# The official time of the country will be moved forward for one hour
# on the 24 hours of the first day of the month of Farvardin and will
# be changed back to its previous state on the 24 hours of the
# thirtieth day of Shahrivar.
#
# From Ali Mirjamali (2022-05-10):
# Official IR News Agency announcement: irna.ir/xjJ3TT
# ...
# Highlights: DST will be cancelled for the next Iranian year 1402
# (i.e 2023-March-21) and forthcoming years.
#
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
# Work around a bug in zic 2022a and earlier.
Rule	Iran	1910	only	-	Jan	 1	00:00	0	-
#
Rule	Iran	1977	only	-	Mar	21	23:00	1:00	-
Rule	Iran	1977	only	-	Oct	20	24:00	0	-
Rule	Iran	1978	only	-	Mar	24	24:00	1:00	-
Rule	Iran	1978	only	-	Aug	 5	01:00	0	-
Rule	Iran	1979	only	-	May	26	24:00	1:00	-
Rule	Iran	1979	only	-	Sep	18	24:00	0	-
Rule	Iran	1980	only	-	Mar	20	24:00	1:00	-
Rule	Iran	1980	only	-	Sep	22	24:00	0	-
Rule	Iran	1991	only	-	May	 2	24:00	1:00	-
Rule	Iran	1992	1995	-	Mar	21	24:00	1:00	-
Rule	Iran	1991	1995	-	Sep	21	24:00	0	-
Rule	Iran	1996	only	-	Mar	20	24:00	1:00	-
Rule	Iran	1996	only	-	Sep	20	24:00	0	-
Rule	Iran	1997	1999	-	Mar	21	24:00	1:00	-
Rule	Iran	1997	1999	-	Sep	21	24:00	0	-
Rule	Iran	2000	only	-	Mar	20	24:00	1:00	-
Rule	Iran	2000	only	-	Sep	20	24:00	0	-
Rule	Iran	2001	2003	-	Mar	21	24:00	1:00	-
Rule	Iran	2001	2003	-	Sep	21	24:00	0	-
Rule	Iran	2004	only	-	Mar	20	24:00	1:00	-
Rule	Iran	2004	only	-	Sep	20	24:00	0	-
Rule	Iran	2005	only	-	Mar	21	24:00	1:00	-
Rule	Iran	2005	only	-	Sep	21	24:00	0	-
Rule	Iran	2008	only	-	Mar	20	24:00	1:00	-
Rule	Iran	2008	only	-	Sep	20	24:00	0	-
Rule	Iran	2009	2011	-	Mar	21	24:00	1:00	-
Rule	Iran	2009	2011	-	Sep	21	24:00	0	-
Rule	Iran	2012	only	-	Mar	20	24:00	1:00	-
Rule	Iran	2012	only	-	Sep	20	24:00	0	-
Rule	Iran	2013	2015	-	Mar	21	24:00	1:00	-
Rule	Iran	2013	2015	-	Sep	21	24:00	0	-
Rule	Iran	2016	only	-	Mar	20	24:00	1:00	-
Rule	Iran	2016	only	-	Sep	20	24:00	0	-
Rule	Iran	2017	2019	-	Mar	21	24:00	1:00	-
Rule	Iran	2017	2019	-	Sep	21	24:00	0	-
Rule	Iran	2020	only	-	Mar	20	24:00	1:00	-
Rule	Iran	2020	only	-	Sep	20	24:00	0	-
Rule	Iran	2021	2022	-	Mar	21	24:00	1:00	-
Rule	Iran	2021	2022	-	Sep	21	24:00	0	-

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Tehran	3:25:44	-	LMT	1916
			3:25:44	-	TMT	1935 Jun 13 # Tehran Mean Time
			3:30	Iran	%z	1977 Oct 20 24:00
			4:00	Iran	%z	1978 Nov 10 24:00
			3:30	Iran	%z


# Iraq
#
# From Jonathan Lennox (2000-06-12):
# An article in this week's Economist ("Inside the Saddam-free zone", p. 50 in
# the U.S. edition) on the Iraqi Kurds contains a paragraph:
# "The three northern provinces ... switched their clocks this spring and
# are an hour ahead of Baghdad."
#
# But Rives McDow (2000-06-18) quotes a contact in Iraqi-Kurdistan as follows:
# In the past, some Kurdish nationalists, as a protest to the Iraqi
# Government, did not adhere to daylight saving time.  They referred
# to daylight saving as Saddam time.  But, as of today, the time zone
# in Iraqi-Kurdistan is on standard time with Baghdad, Iraq.
#
# So we'll ignore the Economist's claim.

# From Steffen Thorsen (2008-03-10):
# The cabinet in Iraq abolished DST last week, according to the following
# news sources (in Arabic):
# http://www.aljeeran.net/wesima_articles/news-20080305-98602.html
# http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10
#
# We have published a short article in English about the change:
# https://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Iraq	1982	only	-	May	1	0:00	1:00	-
Rule	Iraq	1982	1984	-	Oct	1	0:00	0	-
Rule	Iraq	1983	only	-	Mar	31	0:00	1:00	-
Rule	Iraq	1984	1985	-	Apr	1	0:00	1:00	-
Rule	Iraq	1985	1990	-	Sep	lastSun	1:00s	0	-
Rule	Iraq	1986	1990	-	Mar	lastSun	1:00s	1:00	-
# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the ':01' is a typo.
# Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
#
Rule	Iraq	1991	2007	-	Apr	 1	3:00s	1:00	-
Rule	Iraq	1991	2007	-	Oct	 1	3:00s	0	-
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Baghdad	2:57:40	-	LMT	1890
			2:57:36	-	BMT	1918     # Baghdad Mean Time?
			3:00	-	%z	1982 May
			3:00	Iraq	%z


###############################################################################

# Israel

# For more info about the motivation for DST in Israel, see:
# Barak Y. Israel's Daylight Saving Time controversy. Israel Affairs.
# 2020-08-11. https://doi.org/10.1080/13537121.2020.1806564

# From Ephraim Silverberg (2001-01-11):
#
# I coined "IST/IDT" circa 1988.  Until then there were three
# different abbreviations in use:
#
# JST  Jerusalem Standard Time [Danny Braniss, Hebrew University]
# IZT  Israel Zonal (sic) Time [Prof. Haim Papo, Technion]
# EEST Eastern Europe Standard Time [used by almost everyone else]
#
# Since timezones should be called by country and not capital cities,
# I ruled out JST.  As Israel is in Asia Minor and not Eastern Europe,
# EEST was equally unacceptable.  Since "zonal" was not compatible with
# any other timezone abbreviation, I felt that 'IST' was the way to go
# and, indeed, it has received almost universal acceptance in timezone
# settings in Israeli computers.
#
# In any case, I am happy to share timezone abbreviations with India,
# high on my favorite-country list (and not only because my wife's
# family is from India).

# From P Chan (2020-10-27), with corrections:
#
# 1940-1946 Supplement No. 2 to the Palestine Gazette
# # issue page  Order No.   dated      start        end         note
# 1 1010  729  67 of 1940 1940-05-22 1940-05-31* 1940-09-30* revoked by #2
# 2 1013  758  73 of 1940 1940-05-31 1940-05-31  1940-09-30
# 3 1055 1574 196 of 1940 1940-11-06 1940-11-16  1940-12-31
# 4 1066 1811 208 of 1940 1940-12-17 1940-12-31  1941-12-31
# 5 1156 1967 116 of 1941 1941-12-16 1941-12-31  1942-12-31* amended by #6
# 6 1228 1608  86 of 1942 1942-10-14 1941-12-31  1942-10-31
# 7 1256  279  21 of 1943 1943-03-18 1943-03-31  1943-10-31
# 8 1323  249  19 of 1944 1944-03-13 1944-03-31  1944-10-31
# 9 1402  328  20 of 1945 1945-04-05 1945-04-15  1945-10-31
#10 1487  596  14 of 1946 1946-04-04 1946-04-15  1946-10-31
#
# 1948 Iton Rishmi (Official Gazette of the Provisional Government)
# #    issue    page   dated      start       end
#11 2             7 1948-05-20 1948-05-22 1948-10-31*
#	^This moved timezone to +04, replaced by #12 from 1948-08-31 24:00 GMT.
#12 17 (Annex B) 84 1948-08-22 1948-08-31 1948-10-31
#
# 1949-2000 Kovetz HaTakanot (Collection of Regulations)
# # issue page  dated      start       end            note
#13    6  133 1949-03-23 1949-04-30  1949-10-31
#14   80  755 1950-03-17 1950-04-15  1950-09-14
#15  164  782 1951-03-22 1951-03-31  1951-09-29* amended by #16
#16  206 1940 1951-09-23 ----------  1951-10-22* amended by #17
#17  212   78 1951-10-19 ----------  1951-11-10
#18  254  652 1952-03-03 1952-04-19  1952-09-27* amended by #19
#19  300   11 1952-09-15 ----------  1952-10-18
#20  348  817 1953-03-03 1953-04-11  1953-09-12
#21  420  385 1954-02-17 1954-06-12  1954-09-11
#22  497  548 1955-01-14 1955-06-11  1955-09-10
#23  591  608 1956-03-12 1956-06-02  1956-09-29
#24  680  957 1957-02-08 1957-04-27  1957-09-21
#25 3192 1418 1974-06-28 1974-07-06  1974-10-12
#26 3322 1389 1975-04-03 1975-04-19  1975-08-30
#27 4146 2089 1980-07-15 1980-08-02  1980-09-13
#28 4604 1081 1984-02-22 1984-05-05* 1984-08-25* revoked by #29
#29 4619 1312 1984-04-06 1984-05-05  1984-08-25
#30 4744  475 1984-12-23 1985-04-13  1985-09-14* amended by #31
#31 4851 1848 1985-08-18 ----------  1985-08-31
#32 4932  899 1986-04-22 1986-05-17  1986-09-06
#33 5013  580 1987-02-15 1987-04-18* 1987-08-22* revoked by #34
#34 5021  744 1987-03-30 1987-04-14  1987-09-12
#35 5096  659 1988-02-14 1988-04-09  1988-09-03
#36 5167  514 1989-02-03 1989-04-29  1989-09-02
#37 5248  375 1990-01-23 1990-03-24  1990-08-25
#38 5335  612 1991-02-10 1991-03-09* 1991-08-31	 amended by #39
#			 1992-03-28  1992-09-05
#39 5339  709 1991-03-04 1991-03-23  ----------
#40 5506  503 1993-02-18 1993-04-02  1993-09-05
#			 1994-04-01  1994-08-28
#			 1995-03-31  1995-09-03
#41 5731  438 1996-01-01 1996-03-14  1996-09-15
#			 1997-03-13* 1997-09-18* overridden by 1997 Temp Prov
#			 1998-03-19* 1998-09-17* revoked by #42
#42 5853 1243 1997-09-18 1998-03-19  1998-09-05
#43 5937   77 1998-10-18 1999-04-02  1999-09-03
#			 2000-04-14* 2000-09-15* revoked by #44
#			 2001-04-13* 2001-09-14* revoked by #44
#44 6024   39 2000-03-14 2000-04-14  2000-10-22* overridden by 2000 Temp Prov
#			 2001-04-06* 2001-10-10* overridden by 2000 Temp Prov
#			 2002-03-29* 2002-10-29* overridden by 2000 Temp Prov
#
# These are laws enacted by the Knesset since the Minister could only alter the
# transition dates at least six months in advanced under the 1992 Law.
#				dated		start		end
# 1997 Temporary Provisions	1997-03-06	1997-03-20	1997-09-13
# 2000 Temporary Provisions	2000-07-28	----------	2000-10-06
#						2001-04-09	2001-09-24
#						2002-03-29	2002-10-07
#						2003-03-28	2003-10-03
#						2004-04-07	2004-09-22
# Note:
# Transition times in 1940-1957 (#1-#24) were midnight GMT,
# in 1974-1998 (#25-#42 and the 1997 Temporary Provisions) were midnight,
# in 1999-April 2000 (#43,#44) were 02:00,
# in the 2000 Temporary Provisions were 01:00.
#
# -----------------------------------------------------------------------------
# Links:
# 1 https://findit.library.yale.edu/images_layout/view?parentoid=15537490&increment=687
# 2 https://findit.library.yale.edu/images_layout/view?parentoid=15537490&increment=716
# 3 https://findit.library.yale.edu/images_layout/view?parentoid=15537491&increment=721
# 4 https://findit.library.yale.edu/images_layout/view?parentoid=15537491&increment=958
# 5 https://findit.library.yale.edu/images_layout/view?parentoid=15537502&increment=558
# 6 https://findit.library.yale.edu/images_layout/view?parentoid=15537511&increment=105
# 7 https://findit.library.yale.edu/images_layout/view?parentoid=15537516&increment=278
# 8 https://findit.library.yale.edu/images_layout/view?parentoid=15537522&increment=248
# 9 https://findit.library.yale.edu/images_layout/view?parentoid=15537530&increment=329
#10 https://findit.library.yale.edu/images_layout/view?parentoid=15537537&increment=601
#11 https://www.nevo.co.il/law_word/law12/er-002.pdf#page=3
#12 https://www.nevo.co.il/law_word/law12/er-017-t2.pdf#page=4
#13 https://www.nevo.co.il/law_word/law06/tak-0006.pdf#page=3
#14 https://www.nevo.co.il/law_word/law06/tak-0080.pdf#page=7
#15 https://www.nevo.co.il/law_word/law06/tak-0164.pdf#page=10
#16 https://www.nevo.co.il/law_word/law06/tak-0206.pdf#page=4
#17 https://www.nevo.co.il/law_word/law06/tak-0212.pdf#page=2
#18 https://www.nevo.co.il/law_word/law06/tak-0254.pdf#page=4
#19 https://www.nevo.co.il/law_word/law06/tak-0300.pdf#page=5
#20 https://www.nevo.co.il/law_word/law06/tak-0348.pdf#page=3
#21 https://www.nevo.co.il/law_word/law06/tak-0420.pdf#page=5
#22 https://www.nevo.co.il/law_word/law06/tak-0497.pdf#page=10
#23 https://www.nevo.co.il/law_word/law06/tak-0591.pdf#page=6
#24 https://www.nevo.co.il/law_word/law06/tak-0680.pdf#page=3
#25 https://www.nevo.co.il/law_word/law06/tak-3192.pdf#page=2
#26 https://www.nevo.co.il/law_word/law06/tak-3322.pdf#page=5
#27 https://www.nevo.co.il/law_word/law06/tak-4146.pdf#page=2
#28 https://www.nevo.co.il/law_word/law06/tak-4604.pdf#page=7
#29 https://www.nevo.co.il/law_word/law06/tak-4619.pdf#page=2
#30 https://www.nevo.co.il/law_word/law06/tak-4744.pdf#page=11
#31 https://www.nevo.co.il/law_word/law06/tak-4851.pdf#page=2
#32 https://www.nevo.co.il/law_word/law06/tak-4932.pdf#page=19
#33 https://www.nevo.co.il/law_word/law06/tak-5013.pdf#page=8
#34 https://www.nevo.co.il/law_word/law06/tak-5021.pdf#page=8
#35 https://www.nevo.co.il/law_word/law06/tak-5096.pdf#page=3
#36 https://www.nevo.co.il/law_word/law06/tak-5167.pdf#page=2
#37 https://www.nevo.co.il/law_word/law06/tak-5248.pdf#page=7
#38 https://www.nevo.co.il/law_word/law06/tak-5335.pdf#page=6
#39 https://www.nevo.co.il/law_word/law06/tak-5339.pdf#page=7
#40 https://www.nevo.co.il/law_word/law06/tak-5506.pdf#page=19
#41 https://www.nevo.co.il/law_word/law06/tak-5731.pdf#page=2
#42 https://www.nevo.co.il/law_word/law06/tak-5853.pdf#page=3
#43 https://www.nevo.co.il/law_word/law06/tak-5937.pdf#page=9
#44 https://www.nevo.co.il/law_word/law06/tak-6024.pdf#page=4
#
# Time Determination (Temporary Provisions) Law, 1997
# https://www.nevo.co.il/law_html/law19/p201_003.htm
#
# Time Determination (Temporary Provisions) Law, 2000
# https://www.nevo.co.il/law_html/law19/p201_004.htm
#
# Time Determination Law, 1992 and amendments
# https://www.nevo.co.il/law_html/law01/p201_002.htm
# https://main.knesset.gov.il/Activity/Legislation/Laws/Pages/LawPrimary.aspx?lawitemid=2001174

# From Paul Eggert (2020-10-27):
# Several of the midnight transitions mentioned above are ambiguous;
# are they 00:00, 00:00s, 24:00, or 24:00s?  When resolving these ambiguities,
# try to minimize changes from previous tzdb versions, for lack of better info.
# Commentary from previous versions is included below, to help explain this.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Zion	1940	only	-	May	31	24:00u	1:00	D
Rule	Zion	1940	only	-	Sep	30	24:00u	0	S
Rule	Zion	1940	only	-	Nov	16	24:00u	1:00	D
Rule	Zion	1942	1946	-	Oct	31	24:00u	0	S
Rule	Zion	1943	1944	-	Mar	31	24:00u	1:00	D
Rule	Zion	1945	1946	-	Apr	15	24:00u	1:00	D
Rule	Zion	1948	only	-	May	22	24:00u	2:00	DD
Rule	Zion	1948	only	-	Aug	31	24:00u	1:00	D
Rule	Zion	1948	1949	-	Oct	31	24:00u	0	S
Rule	Zion	1949	only	-	Apr	30	24:00u	1:00	D
Rule	Zion	1950	only	-	Apr	15	24:00u	1:00	D
Rule	Zion	1950	only	-	Sep	14	24:00u	0	S
Rule	Zion	1951	only	-	Mar	31	24:00u	1:00	D
Rule	Zion	1951	only	-	Nov	10	24:00u	0	S
Rule	Zion	1952	only	-	Apr	19	24:00u	1:00	D
Rule	Zion	1952	only	-	Oct	18	24:00u	0	S
Rule	Zion	1953	only	-	Apr	11	24:00u	1:00	D
Rule	Zion	1953	only	-	Sep	12	24:00u	0	S
Rule	Zion	1954	only	-	Jun	12	24:00u	1:00	D
Rule	Zion	1954	only	-	Sep	11	24:00u	0	S
Rule	Zion	1955	only	-	Jun	11	24:00u	1:00	D
Rule	Zion	1955	only	-	Sep	10	24:00u	0	S
Rule	Zion	1956	only	-	Jun	 2	24:00u	1:00	D
Rule	Zion	1956	only	-	Sep	29	24:00u	0	S
Rule	Zion	1957	only	-	Apr	27	24:00u	1:00	D
Rule	Zion	1957	only	-	Sep	21	24:00u	0	S
Rule	Zion	1974	only	-	Jul	 6	24:00	1:00	D
Rule	Zion	1974	only	-	Oct	12	24:00	0	S
Rule	Zion	1975	only	-	Apr	19	24:00	1:00	D
Rule	Zion	1975	only	-	Aug	30	24:00	0	S

# From Alois Treindl (2019-03-06):
# http://www.moin.gov.il/Documents/שעון%20קיץ/clock-50-years-7-2014.pdf
# From Isaac Starkman (2019-03-06):
# Summer time was in that period in 1980 and 1984, see
# https://www.ynet.co.il/articles/0,7340,L-3951073,00.html
# You can of course read it in translation.
# I checked the local newspapers for that years.
# It started on midnight and end at 01.00 am.
# From Paul Eggert (2019-03-06):
# Also see this thread about the moin.gov.il URL:
# https://mm.icann.org/pipermail/tz/2018-November/027194.html
Rule	Zion	1980	only	-	Aug	 2	24:00s	1:00	D
Rule	Zion	1980	only	-	Sep	13	24:00s	0	S
Rule	Zion	1984	only	-	May	 5	24:00s	1:00	D
Rule	Zion	1984	only	-	Aug	25	24:00s	0	S

Rule	Zion	1985	only	-	Apr	13	24:00	1:00	D
Rule	Zion	1985	only	-	Aug	31	24:00	0	S
Rule	Zion	1986	only	-	May	17	24:00	1:00	D
Rule	Zion	1986	only	-	Sep	 6	24:00	0	S
Rule	Zion	1987	only	-	Apr	14	24:00	1:00	D
Rule	Zion	1987	only	-	Sep	12	24:00	0	S

# From Avigdor Finkelstein (2014-03-05):
# I check the Parliament (Knesset) records and there it's stated that the
# [1988] transition should take place on Saturday night, when the Sabbath
# ends and changes to Sunday.
Rule	Zion	1988	only	-	Apr	 9	24:00	1:00	D
Rule	Zion	1988	only	-	Sep	 3	24:00	0	S

# From Ephraim Silverberg
# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
# and 2005-02-17):

# According to the Office of the Secretary General of the Ministry of
# Interior, there is NO set rule for Daylight-Savings/Standard time changes.
# One thing is entrenched in law, however: that there must be at least 150
# days of daylight savings time annually.  From 1993-1998, the change to
# daylight savings time was on a Friday morning from midnight IST to
# 1 a.m IDT; up until 1998, the change back to standard time was on a
# Saturday night from midnight daylight savings time to 11 p.m. standard
# time.  1996 is an exception to this rule where the change back to standard
# time took place on Sunday night instead of Saturday night to avoid
# conflicts with the Jewish New Year.  In 1999, the change to
# daylight savings time was still on a Friday morning but from
# 2 a.m. IST to 3 a.m. IDT; furthermore, the change back to standard time
# was also on a Friday morning from 2 a.m. IDT to 1 a.m. IST for
# 1999 only.  In the year 2000, the change to daylight savings time was
# similar to 1999, but although the change back will be on a Friday, it
# will take place from 1 a.m. IDT to midnight IST.  Starting in 2001, all
# changes to/from will take place at 1 a.m. old time, but now there is no
# rule as to what day of the week it will take place in as the start date
# (except in 2003) is the night after the Passover Seder (i.e. the eve
# of the 16th of Nisan in the lunar Hebrew calendar) and the end date
# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Zion	1989	only	-	Apr	29	24:00	1:00	D
Rule	Zion	1989	only	-	Sep	 2	24:00	0	S
Rule	Zion	1990	only	-	Mar	24	24:00	1:00	D
Rule	Zion	1990	only	-	Aug	25	24:00	0	S
Rule	Zion	1991	only	-	Mar	23	24:00	1:00	D
Rule	Zion	1991	only	-	Aug	31	24:00	0	S
Rule	Zion	1992	only	-	Mar	28	24:00	1:00	D
Rule	Zion	1992	only	-	Sep	 5	24:00	0	S
Rule	Zion	1993	only	-	Apr	 2	0:00	1:00	D
Rule	Zion	1993	only	-	Sep	 5	0:00	0	S

# The dates for 1994-1995 were obtained from Office of the Spokeswoman for the
# Ministry of Interior, Jerusalem, Israel.  The spokeswoman can be reached by
# calling the office directly at 972-2-6701447 or 972-2-6701448.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Zion	1994	only	-	Apr	 1	0:00	1:00	D
Rule	Zion	1994	only	-	Aug	28	0:00	0	S
Rule	Zion	1995	only	-	Mar	31	0:00	1:00	D
Rule	Zion	1995	only	-	Sep	 3	0:00	0	S

# The dates for 1996 were determined by the Minister of Interior of the
# time, Haim Ramon.  The official announcement regarding 1996-1998
# (with the dates for 1997-1998 no longer being relevant) can be viewed at:
#
#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz
#
# The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa.
#
# The official announcements for the years 1997-1999 can be viewed at:
#
#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz
#
#       where YYYY is the relevant year.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Zion	1996	only	-	Mar	14	24:00	1:00	D
Rule	Zion	1996	only	-	Sep	15	24:00	0	S
Rule	Zion	1997	only	-	Mar	20	24:00	1:00	D
Rule	Zion	1997	only	-	Sep	13	24:00	0	S
Rule	Zion	1998	only	-	Mar	20	0:00	1:00	D
Rule	Zion	1998	only	-	Sep	 6	0:00	0	S
Rule	Zion	1999	only	-	Apr	 2	2:00	1:00	D
Rule	Zion	1999	only	-	Sep	 3	2:00	0	S

# The Knesset Interior Committee has changed the dates for 2000 for
# the third time in just over a year and have set new dates for the
# years 2001-2004 as well.
#
# The official announcement for the start date of 2000 can be viewed at:
#
#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz
#
# The official announcement for the end date of 2000 and the dates
# for the years 2001-2004 can be viewed at:
#
#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Zion	2000	only	-	Apr	14	2:00	1:00	D
Rule	Zion	2000	only	-	Oct	 6	1:00	0	S
Rule	Zion	2001	only	-	Apr	 9	1:00	1:00	D
Rule	Zion	2001	only	-	Sep	24	1:00	0	S
Rule	Zion	2002	only	-	Mar	29	1:00	1:00	D
Rule	Zion	2002	only	-	Oct	 7	1:00	0	S
Rule	Zion	2003	only	-	Mar	28	1:00	1:00	D
Rule	Zion	2003	only	-	Oct	 3	1:00	0	S
Rule	Zion	2004	only	-	Apr	 7	1:00	1:00	D
Rule	Zion	2004	only	-	Sep	22	1:00	0	S

# The proposed law agreed upon by the Knesset Interior Committee on
# 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the
# last Friday before April 2nd (i.e. the last Friday in March or April
# 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday
# night _before_ the fast of Yom Kippur.
#
# Those who can read Hebrew can view the announcement at:
#
#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Zion	2005	2012	-	Apr	Fri<=1	2:00	1:00	D
Rule	Zion	2005	only	-	Oct	 9	2:00	0	S
Rule	Zion	2006	only	-	Oct	 1	2:00	0	S
Rule	Zion	2007	only	-	Sep	16	2:00	0	S
Rule	Zion	2008	only	-	Oct	 5	2:00	0	S
Rule	Zion	2009	only	-	Sep	27	2:00	0	S
Rule	Zion	2010	only	-	Sep	12	2:00	0	S
Rule	Zion	2011	only	-	Oct	 2	2:00	0	S
Rule	Zion	2012	only	-	Sep	23	2:00	0	S

# From Ephraim Silverberg (2020-10-26):
# The current time law (2013) from the State of Israel can be viewed
# (in Hebrew) at:
# ftp://ftp.cs.huji.ac.il/pub/tz/israel/announcements/2013+law.pdf
# It translates to:
# Every year, in the period from the Friday before the last Sunday in
# the month of March at 02:00 a.m. until the last Sunday of the month
# of October at 02:00 a.m., Israel Time will be advanced an additional
# hour such that it will be UTC+3.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Zion	2013	max	-	Mar	Fri>=23	2:00	1:00	D
Rule	Zion	2013	max	-	Oct	lastSun	2:00	0	S

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Jerusalem	2:20:54 -	LMT	1880
			2:20:40	-	JMT	1918 # Jerusalem Mean Time?
			2:00	Zion	I%sT



###############################################################################

# Japan

# '9:00' and 'JST' is from Guy Harris.

# From Paul Eggert (2020-01-19):
# Starting in the 7th century, Japan generally followed an ancient Chinese
# timekeeping system that divided night and day into six hours each,
# with hour length depending on season.  In 1873 the government
# started requiring the use of a Western style 24-hour clock.  See:
# Yulia Frumer, "Making Time: Astronomical Time Measurement in Tokugawa Japan"
# <https://www.worldcat.org/oclc/1043907065>.  As the tzdb code and
# data support only 24-hour clocks, its tables model timestamps before
# 1873 using Western-style local mean time.

# From Hideyuki Suzuki (1998-11-09):
# 'Tokyo' usually stands for the former location of Tokyo Astronomical
# Observatory: 139° 44' 40.90" E (9h 18m 58.727s), 35° 39' 16.0" N.
# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
# edited by National Astronomical Observatory of Japan....
# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
# The law is enacted on 1886-07-07.

# From Hideyuki Suzuki (1998-11-16):
# The ordinance No. 51 (1886) established "standard time" in Japan,
# which stands for the time on 135° E.
# In the ordinance No. 167 (1895), "standard time" was renamed to "central
# standard time".  And the same ordinance also established "western standard
# time", which stands for the time on 120° E....  But "western standard
# time" was abolished in the ordinance No. 529 (1937).  In the ordinance No.
# 167, there is no mention regarding for what place western standard time is
# standard....
#
# I wrote "ordinance" above, but I don't know how to translate.
# In Japanese it's "chokurei", which means ordinance from emperor.

# From Yu-Cheng Chuang (2013-07-12):
# ...the Meiji Emperor announced Ordinance No. 167 of Meiji Year 28 "The clause
# about standard time" ... The adoption began from Jan 1, 1896.
# https://ja.wikisource.org/wiki/標準時ニ關スル件_(公布時)
#
# ...the Showa Emperor announced Ordinance No. 529 of Showa Year 12 ... which
# means the whole Japan territory, including later occupations, adopt Japan
# Central Time (UT+9). The adoption began on Oct 1, 1937.
# https://ja.wikisource.org/wiki/明治二十八年勅令第百六十七號標準時ニ關スル件中改正ノ件

# From Paul Eggert (1995-03-06):
# Today's _Asahi Evening News_ (page 4) reports that Japan had
# daylight saving between 1948 and 1951, but "the system was discontinued
# because the public believed it would lead to longer working hours."

# From Mayumi Negishi in the 2005-08-10 Japan Times:
# http://www.japantimes.co.jp/cgi-bin/getarticle.pl5?nn20050810f2.htm
# Occupation authorities imposed daylight-saving time on Japan on
# [1948-05-01]....  But lack of prior debate and the execution of
# daylight-saving time just three days after the bill was passed generated
# deep hatred of the concept....  The Diet unceremoniously passed a bill to
# dump the unpopular system in October 1951, less than a month after the San
# Francisco Peace Treaty was signed.  (A government poll in 1951 showed 53%
# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who
# wanted to keep it.)

# From Takayuki Nikai (2018-01-19):
# The source of information is Japanese law.
# http://www.shugiin.go.jp/internet/itdb_housei.nsf/html/houritsu/00219480428029.htm
# http://www.shugiin.go.jp/internet/itdb_housei.nsf/html/houritsu/00719500331039.htm
# ... In summary, it is written as follows.  From 24:00 on the first Saturday
# in May, until 0:00 on the day after the second Saturday in September.

# From Phake Nick (2018-09-27):
# [T]he webpage authored by National Astronomical Observatory of Japan
# https://eco.mtk.nao.ac.jp/koyomi/wiki/BBFEB9EF2FB2C6BBFEB9EF.html
# ... mentioned that using Showa 23 (year 1948) as example, 13pm of September
# 11 in summer time will equal to 0am of September 12 in standard time.
# It cited a document issued by the Liaison Office which briefly existed
# during the postwar period of Japan, where the detail on implementation
# of the summer time is described in the document.
# https://eco.mtk.nao.ac.jp/koyomi/wiki/BBFEB9EF2FB2C6BBFEB9EFB2C6BBFEB9EFA4CEBCC2BBDCA4CBA4C4A4A4A4C6.pdf
# The text in the document do instruct a fall back to occur at
# September 11, 13pm in summer time, while ordinary citizens can
# change the clock before they sleep.
#
# From Paul Eggert (2018-09-27):
# This instruction is equivalent to "Sat>=8 25:00", so use that.  zic treats
# it like "Sun>=9 01:00", which is not quite the same but is the best we can
# do in any POSIX or C platform.  The "25:00" assumes zic from 2007 or later,
# which should be safe now.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Japan	1948	only	-	May	Sat>=1	24:00	1:00	D
Rule	Japan	1948	1951	-	Sep	Sat>=8	25:00	0	S
Rule	Japan	1949	only	-	Apr	Sat>=1	24:00	1:00	D
Rule	Japan	1950	1951	-	May	Sat>=1	24:00	1:00	D

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Tokyo	9:18:59	-	LMT	1887 Dec 31 15:00u
			9:00	Japan	J%sT
# Since 1938, all Japanese possessions have been like Asia/Tokyo,
# except that Truk (Chuuk), Ponape (Pohnpei), and Jaluit (Kosrae) did not
# switch from +10 to +09 until 1941-04-01; see the 'australasia' file.

# Jordan
#
# From <http://star.arabia.com/990701/JO9.html>
# Jordan Week (1999-07-01) via Steffen Thorsen (1999-09-09):
# Clocks in Jordan were forwarded one hour on Wednesday at midnight,
# in accordance with the government's decision to implement summer time
# all year round.
#
# From <http://star.arabia.com/990930/JO9.html>
# Jordan Week (1999-09-30) via Steffen Thorsen (1999-11-09):
# Winter time starts today Thursday, 30 September. Clocks will be turned back
# by one hour.  This is the latest government decision and it's final!
# The decision was taken because of the increase in working hours in
# government's departments from six to seven hours.
#
# From Paul Eggert (2005-11-22):
# Starting 2003 transitions are from Steffen Thorsen's web site timeanddate.com.
#
# From Steffen Thorsen (2005-11-23):
# 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".
#

# From Steffen Thorsen (2009-04-02):
# This single one might be good enough, (2009-03-24, Arabic):
# http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279
#
# Google's translation:
#
# > The Council of Ministers decided in 2002 to adopt the principle of timely
# > submission of the summer at 60 minutes as of midnight on the last Thursday
# > of the month of March of each year.
#
# So - this means the midnight between Thursday and Friday since 2002.

# From Arthur David Olson (2009-04-06):
# We still have Jordan switching to DST on Thursdays in 2000 and 2001.

# From Steffen Thorsen (2012-10-25):
# Yesterday the government in Jordan announced that they will not
# switch back to standard time this winter, so the will stay on DST
# until about the same time next year (at least).
# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950

# From Steffen Thorsen (2013-12-11):
# Jordan Times and other sources say that Jordan is going back to
# UTC+2 on 2013-12-19 at midnight:
# http://jordantimes.com/govt-decides-to-switch-back-to-wintertime
# Official, in Arabic:
# http://www.petra.gov.jo/public_news/Nws_NewsDetails.aspx?Menu_ID=&Site_Id=2&lang=1&NewsID=133230&CatID=14
# ... Our background/permalink about it
# https://www.timeanddate.com/news/time/jordan-reverses-dst-decision.html
# ...
# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?lang=2&site_id=1&NewsID=133313&Type=P
# ... says midnight for the coming one and 1:00 for the ones in the future
# (and they will use DST again next year, using the normal schedule).

# From Paul Eggert (2013-12-11):
# As Steffen suggested, consider the past 21-month experiment to be DST.

# From Steffen Thorsen (2021-09-24):
# The Jordanian Government announced yesterday that they will start DST
# in February instead of March:
# https://petra.gov.jo/Include/InnerPage.jsp?ID=37683&lang=en&name=en_news (English)
# https://petra.gov.jo/Include/InnerPage.jsp?ID=189969&lang=ar&name=news (Arabic)
# From the Arabic version, it seems to say it would be at midnight
# (assume 24:00) on the last Thursday in February, starting from 2022.

# From Issam Al-Zuwairi (2022-10-05):
# The Council of Ministers in Jordan decided Wednesday 5th October 2022,
# that daylight saving time (DST) will be throughout the year....
#
# From Brian Inglis (2022-10-06):
# https://petra.gov.jo/Include/InnerPage.jsp?ID=45567&lang=en&name=en_news
#
# From Paul Eggert (2022-10-05):
# Like Syria, model this as a transition from EEST +03 (DST) to plain +03
# (non-DST) at the point where DST would otherwise have ended.

# Rule	NAME	FROM	TO	-	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	-
Rule	Jordan	1974	1977	-	May	1	0:00	1:00	S
Rule	Jordan	1976	only	-	Nov	1	0:00	0	-
Rule	Jordan	1977	only	-	Oct	1	0:00	0	-
Rule	Jordan	1978	only	-	Apr	30	0:00	1:00	S
Rule	Jordan	1978	only	-	Sep	30	0:00	0	-
Rule	Jordan	1985	only	-	Apr	1	0:00	1:00	S
Rule	Jordan	1985	only	-	Oct	1	0:00	0	-
Rule	Jordan	1986	1988	-	Apr	Fri>=1	0:00	1:00	S
Rule	Jordan	1986	1990	-	Oct	Fri>=1	0:00	0	-
Rule	Jordan	1989	only	-	May	8	0:00	1:00	S
Rule	Jordan	1990	only	-	Apr	27	0:00	1:00	S
Rule	Jordan	1991	only	-	Apr	17	0:00	1:00	S
Rule	Jordan	1991	only	-	Sep	27	0:00	0	-
Rule	Jordan	1992	only	-	Apr	10	0:00	1:00	S
Rule	Jordan	1992	1993	-	Oct	Fri>=1	0:00	0	-
Rule	Jordan	1993	1998	-	Apr	Fri>=1	0:00	1:00	S
Rule	Jordan	1994	only	-	Sep	Fri>=15	0:00	0	-
Rule	Jordan	1995	1998	-	Sep	Fri>=15	0:00s	0	-
Rule	Jordan	1999	only	-	Jul	 1	0:00s	1:00	S
Rule	Jordan	1999	2002	-	Sep	lastFri	0:00s	0	-
Rule	Jordan	2000	2001	-	Mar	lastThu	0:00s	1:00	S
Rule	Jordan	2002	2012	-	Mar	lastThu	24:00	1:00	S
Rule	Jordan	2003	only	-	Oct	24	0:00s	0	-
Rule	Jordan	2004	only	-	Oct	15	0:00s	0	-
Rule	Jordan	2005	only	-	Sep	lastFri	0:00s	0	-
Rule	Jordan	2006	2011	-	Oct	lastFri	0:00s	0	-
Rule	Jordan	2013	only	-	Dec	20	0:00	0	-
Rule	Jordan	2014	2021	-	Mar	lastThu	24:00	1:00	S
Rule	Jordan	2014	2022	-	Oct	lastFri	0:00s	0	-
Rule	Jordan	2022	only	-	Feb	lastThu	24:00	1:00	S
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Amman	2:23:44 -	LMT	1931
			2:00	Jordan	EE%sT	2022 Oct 28 0:00s
			3:00	-	%z


# Kazakhstan

# From Kazakhstan Embassy's News Bulletin No. 11
# <http://www.kazsociety.org.uk/news/2005/03/30.htm> (2005-03-21):
# The Government of Kazakhstan passed a resolution March 15 abolishing
# daylight saving time citing lack of economic benefits and health
# complications coupled with a decrease in productivity.
#
# From Branislav Kojic (in Astana) via Gwillim Law (2005-06-28):
# ... what happened was that the former Kazakhstan Eastern time zone
# was "blended" with the Central zone.  Therefore, Kazakhstan now has
# two time zones, and difference between them is one hour.  The zone
# closer to UTC is the former Western zone (probably still called the
# same), encompassing four provinces in the west: Aqtöbe, Atyraū,
# Mangghystaū, and West Kazakhstan.  The other zone encompasses
# everything else....  I guess that would make Kazakhstan time zones
# de jure UTC+5 and UTC+6 respectively.

# From Stepan Golosunov (2016-03-27):
# Review of the linked documents from http://adilet.zan.kz/
# produced the following data for post-1991 Kazakhstan:
#
# 0. Act of the Cabinet of Ministers of the USSR
# from 1991-02-04 No. 20
# http://pravo.gov.ru/proxy/ips/?docbody=&nd=102010545
# removed the extra hour ("decree time") on the territory of the USSR
# starting with the last Sunday of March 1991.
# It also allowed (but not mandated) Kazakh SSR, Kirghiz SSR, Tajik SSR,
# Turkmen SSR and Uzbek SSR to not have "summer" time.
#
# The 1992-01-13 act also refers to the act of the Cabinet of Ministers
# of the Kazakh SSR from 1991-03-20 No. 170 "About the act of the Cabinet
# of Ministers of the USSR from 1991-02-04 No. 20" but I didn't found its
# text.
#
# According to Izvestia newspaper No. 68 (23334) from 1991-03-20
# -- page 6; available at http://libinfo.org/newsr/newsr2574.djvu via
# http://libinfo.org/index.php?id=58564 -- on 1991-03-31 at 2:00 during
# transition to "summer" time:
# Republic of Georgia, Latvian SSR, Lithuanian SSR, SSR Moldova,
# Estonian SSR; Komi ASSR; Kaliningrad oblast; Nenets autonomous okrug
# were to move clocks 1 hour forward.
# Kazakh SSR (excluding Uralsk oblast); Republic of Kyrgyzstan, Tajik
# SSR; Andijan, Jizzakh, Namangan, Sirdarya, Tashkent, Fergana oblasts
# of the Uzbek SSR were to move clocks 1 hour backwards.
# Other territories were to not move clocks.
# When the "summer" time would end on 1991-09-29, clocks were to be
# moved 1 hour backwards on the territory of the USSR excluding
# Kazakhstan, Kirghizia, Uzbekistan, Turkmenia, Tajikistan.
#
# Apparently there were last minute changes. Apparently Kazakh act No. 170
# was one of such changes.
#
# https://ru.wikipedia.org/wiki/Декретное_время
# claims that Sovetskaya Rossiya newspaper on 1991-03-29 published that
# Nenets autonomous okrug, Komi and Kazakhstan (excluding Uralsk oblast)
# were to not move clocks and Uralsk oblast was to move clocks
# forward; on 1991-09-29 Kazakhstan was to move clocks backwards.
# (Probably there were changes even after that publication. There is an
# article claiming that Kaliningrad oblast decided on 1991-03-29 to not
# move clocks.)
#
# This implies that on 1991-03-31 Asia/Oral remained on +04/+05 while
# the rest of Kazakhstan switched from +06/+07 to +05/06 or from +05/06
# to +04/+05. It's unclear how Qyzylorda oblast moved into the fifth
# time belt. (By switching from +04/+05 to +05/+06 on 1991-09-29?) ...
#
# 1. Act of the Cabinet of Ministers of the Republic of Kazakhstan
# from 1992-01-13 No. 28
# http://adilet.zan.kz/rus/docs/P920000028_
# (text includes modification from the 1996 act)
# introduced new rules for calculation of time, mirroring Russian
# 1992-01-08 act.  It specified that time would be calculated
# according to time belts plus extra hour ("decree time"), moved clocks
# on the whole territory of Kazakhstan 1 hour forward on 1992-01-19 at
# 2:00, specified DST rules.  It acknowledged that Kazakhstan was
# located in the fourth and the fifth time belts and specified the
# border between them to be located east of Qostanay and Aktyubinsk
# oblasts (notably including Turgai and Qyzylorda oblasts into the fifth
# time belt).
#
# This means switch on 1992-01-19 at 2:00 from +04/+05 to +05/+06 for
# Asia/Aqtau, Asia/Aqtobe, Asia/Oral, Atyraū and Qostanay oblasts; from
# +05/+06 to +06/+07 for Asia/Almaty and Asia/Qyzylorda (and Arkalyk)....
#
# 2. Act of the Cabinet of Ministers of the Republic of Kazakhstan
# from 1992-03-27 No. 284
# http://adilet.zan.kz/rus/docs/P920000284_
# cancels extra hour ("decree time") for Uralsk and Qyzylorda oblasts
# since the last Sunday of March 1992, while keeping them in the fourth
# and the fifth time belts respectively.
#
# 3. Order of the Prime Minister of the Republic of Kazakhstan
# from 1994-09-23 No. 384
# http://adilet.zan.kz/rus/docs/R940000384_
# cancels the extra hour ("decree time") on the territory of Mangghystaū
# oblast since the last Sunday of September 1994 (saying that time on
# the territory would correspond to the third time belt as a
# result)....
#
# 4. Act of the Government of the Republic of Kazakhstan
# from 1996-05-08 No. 575
# http://adilet.zan.kz/rus/docs/P960000575_
# amends the 1992-01-13 act to end summer time in October instead
# of September, mirroring identical Russian change from 1996-04-23 act.
#
# 5. Act of the Government of the Republic of Kazakhstan
# from 1999-03-26 No. 305
# http://adilet.zan.kz/rus/docs/P990000305_
# cancels the extra hour ("decree time") for Atyraū oblast since the
# last Sunday of March 1999 while retaining the oblast in the fourth
# time belt.
#
# This means change from +05/+06 to +04/+05....
#
# 6. Act of the Government of the Republic of Kazakhstan
# from 2000-11-23 No. 1749
# http://adilet.zan.kz/rus/archive/docs/P000001749_/23.11.2000
# replaces the previous five documents.
#
# The only changes I noticed are in definition of the border between the
# fourth and the fifth time belts.  They account for changes in spelling
# and administrative division (splitting of Turgai oblast in 1997
# probably changed time in territories incorporated into Qostanay oblast
# (including Arkalyk) from +06/+07 to +05/+06) and move Qyzylorda oblast
# from being in the fifth time belt and not using decree time into the
# fourth time belt (no change in practice).
#
# 7. Act of the Government of the Republic of Kazakhstan
# from 2003-12-29 No. 1342
# http://adilet.zan.kz/rus/docs/P030001342_
# modified the 2000-11-23 act.  No relevant changes, apparently.
#
# 8. Act of the Government of the Republic of Kazakhstan
# from 2004-07-20 No. 775
# http://adilet.zan.kz/rus/archive/docs/P040000775_/20.07.2004
# modified the 2000-11-23 act to move Qostanay and Qyzylorda oblasts into
# the fifth time belt and add Aktobe oblast to the list of regions not
# using extra hour ("decree time"), leaving Kazakhstan with only 2 time
# zones (+04/+05 and +06/+07).  The changes were to be implemented
# during DST transitions in 2004 and 2005 but the acts got radically
# amended before implementation happened.
#
# 9. Act of the Government of the Republic of Kazakhstan
# from 2004-09-15 No. 1059
# http://adilet.zan.kz/rus/docs/P040001059_
# modified the 2000-11-23 act to remove exceptions from the "decree time"
# (leaving Kazakhstan in +05/+06 and +06/+07 zones), amended the
# 2004-07-20 act to implement changes for Atyraū, West Kazakhstan,
# Qostanay, Qyzylorda and Mangghystaū oblasts by not moving clocks
# during the 2004 transition to "winter" time.
#
# This means transition from +04/+05 to +05/+06 for Atyraū oblast (no
# zone currently), Asia/Oral, Asia/Aqtau and transition from +05/+06 to
# +06/+07 for Qostanay oblast (Qostanay and Arkalyk, no zones currently)
# and Asia/Qyzylorda on 2004-10-31 at 3:00....
#
# 10. Act of the Government of the Republic of Kazakhstan
# from 2005-03-15 No. 231
# http://adilet.zan.kz/rus/docs/P050000231_
# removes DST provisions from the 2000-11-23 act, removes most of the
# (already implemented) provisions from the 2004-07-20 and 2004-09-15
# acts, comes into effect 10 days after official publication.
# The only practical effect seems to be the abolition of the summer
# time.
#
# Unamended version of the act of the Government of the Russian Federation
# No. 23 from 1992-01-08 [See 'europe' file for details].
# Kazakh 1992-01-13 act appears to provide the same rules and 1992-03-27
# act was to be enacted on the last Sunday of March 1992.

# From Stepan Golosunov (2016-11-08):
# Turgai reorganization should affect only southern part of Qostanay
# oblast.  Which should probably be separated into Asia/Arkalyk zone.
# (There were also 1970, 1988 and 1990 Turgai oblast reorganizations
# according to wikipedia.)
#
# [For Qostanay] http://www.ng.kz/gazeta/195/hranit/
# suggests that clocks were to be moved 40 minutes backwards on
# 1920-01-01 to the fourth time belt.  But I do not understand
# how that could happen....
#
# [For Atyrau and Oral] 1919 decree
# (http://www.worldtimezone.com/dst_news/dst_news_russia-1919-02-08.html
# and in Byalokoz) lists Ural river (plus 10 versts on its left bank) in
# the third time belt (before 1930 this means +03).

# From Alexander Konzurovski (2018-12-20):
# (Asia/Qyzylorda) is changing its time zone from UTC+6 to UTC+5
# effective December 21st, 2018....
# http://adilet.zan.kz/rus/docs/P1800000817 (russian language).

# From Zhanbolat Raimbekov (2024-01-19):
# Kazakhstan (all parts) switching to UTC+5 on March 1, 2024
# https://www.gov.kz/memleket/entities/mti/press/news/details/688998?lang=ru
# [in Russian]
# (2024-01-20): https://primeminister.kz/ru/decisions/19012024-20
#
# From Alexander Krivenyshev (2024-01-19):
# According to a different news and the official web site for the Ministry of
# Trade and Integration of the Republic of Kazakhstan:
# https://en.inform.kz/news/kazakhstan-to-switch-to-single-hour-zone-mar-1-54ad0b/

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
#
# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
# This includes Abai/Abay (ISO 3166-2 code KZ-10), Aqmola/Akmola (KZ-11),
# Almaty (KZ-19), Almaty city (KZ-75), Astana city (KZ-71),
# East Kazakhstan (KZ-63), Jambyl/Zhambyl (KZ-31), Jetisu/Zhetysu (KZ-33),
# Karaganda (KZ-35), North Kazakhstan (KZ-59), Pavlodar (KZ-55),
# Shymkent city (KZ-79), Turkistan (KZ-61), and Ulytau (KZ-62).
Zone	Asia/Almaty	5:07:48 -	LMT	1924 May  2 # or Alma-Ata
			5:00	-	%z	1930 Jun 21
			6:00 RussiaAsia %z	1991 Mar 31  2:00s
			5:00 RussiaAsia	%z	1992 Jan 19  2:00s
			6:00 RussiaAsia	%z	2004 Oct 31  2:00s
			6:00	-	%z	2024 Mar  1  0:00
			5:00	-	%z
# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.) (KZ-43)
Zone	Asia/Qyzylorda	4:21:52 -	LMT	1924 May  2
			4:00	-	%z	1930 Jun 21
			5:00	-	%z	1981 Apr  1
			5:00	1:00	%z	1981 Oct  1
			6:00	-	%z	1982 Apr  1
			5:00 RussiaAsia	%z	1991 Mar 31  2:00s
			4:00 RussiaAsia	%z	1991 Sep 29  2:00s
			5:00 RussiaAsia	%z	1992 Jan 19  2:00s
			6:00 RussiaAsia	%z	1992 Mar 29  2:00s
			5:00 RussiaAsia	%z	2004 Oct 31  2:00s
			6:00	-	%z	2018 Dec 21  0:00
			5:00	-	%z
# Qostanay (aka Kostanay, Kustanay) (KZ-39)
# The 1991/2 rules are unclear partly because of the 1997 Turgai
# reorganization.
Zone	Asia/Qostanay	4:14:28 -	LMT	1924 May  2
			4:00	-	%z	1930 Jun 21
			5:00	-	%z	1981 Apr  1
			5:00	1:00	%z	1981 Oct  1
			6:00	-	%z	1982 Apr  1
			5:00 RussiaAsia	%z	1991 Mar 31  2:00s
			4:00 RussiaAsia	%z	1992 Jan 19  2:00s
			5:00 RussiaAsia	%z	2004 Oct 31  2:00s
			6:00	-	%z	2024 Mar  1  0:00
			5:00	-	%z
# Aqtöbe (aka Aktobe, formerly Aktyubinsk) (KZ-15)
Zone	Asia/Aqtobe	3:48:40	-	LMT	1924 May  2
			4:00	-	%z	1930 Jun 21
			5:00	-	%z	1981 Apr  1
			5:00	1:00	%z	1981 Oct  1
			6:00	-	%z	1982 Apr  1
			5:00 RussiaAsia	%z	1991 Mar 31  2:00s
			4:00 RussiaAsia	%z	1992 Jan 19  2:00s
			5:00 RussiaAsia	%z	2004 Oct 31  2:00s
			5:00	-	%z
# Mangghystaū (KZ-47)
# Aqtau was not founded until 1963, but it represents an inhabited region,
# so include timestamps before 1963.
Zone	Asia/Aqtau	3:21:04	-	LMT	1924 May  2
			4:00	-	%z	1930 Jun 21
			5:00	-	%z	1981 Oct  1
			6:00	-	%z	1982 Apr  1
			5:00 RussiaAsia	%z	1991 Mar 31  2:00s
			4:00 RussiaAsia	%z	1992 Jan 19  2:00s
			5:00 RussiaAsia	%z	1994 Sep 25  2:00s
			4:00 RussiaAsia	%z	2004 Oct 31  2:00s
			5:00	-	%z
# Atyraū (KZ-23) is like Mangghystaū except it switched from
# +04/+05 to +05/+06 in spring 1999, not fall 1994.
Zone	Asia/Atyrau	3:27:44	-	LMT	1924 May  2
			3:00	-	%z	1930 Jun 21
			5:00	-	%z	1981 Oct  1
			6:00	-	%z	1982 Apr  1
			5:00 RussiaAsia	%z	1991 Mar 31  2:00s
			4:00 RussiaAsia	%z	1992 Jan 19  2:00s
			5:00 RussiaAsia	%z	1999 Mar 28  2:00s
			4:00 RussiaAsia	%z	2004 Oct 31  2:00s
			5:00	-	%z
# West Kazakhstan (KZ-27)
# From Paul Eggert (2016-03-18):
# The 1989 transition is from USSR act No. 227 (1989-03-14).
Zone	Asia/Oral	3:25:24	-	LMT	1924 May  2 # or Ural'sk
			3:00	-	%z	1930 Jun 21
			5:00	-	%z	1981 Apr  1
			5:00	1:00	%z	1981 Oct  1
			6:00	-	%z	1982 Apr  1
			5:00 RussiaAsia	%z	1989 Mar 26  2:00s
			4:00 RussiaAsia	%z	1992 Jan 19  2:00s
			5:00 RussiaAsia	%z	1992 Mar 29  2:00s
			4:00 RussiaAsia	%z	2004 Oct 31  2:00s
			5:00	-	%z

# Kyrgyzstan (Kirgizstan)
# Transitions through 1991 are from Shanks & Pottenger.

# From Paul Eggert (2005-08-15):
# According to an article dated today in the Kyrgyzstan Development Gateway
# http://eng.gateway.kg/cgi-bin/page.pl?id=1&story_name=doc9979.shtml
# Kyrgyzstan is canceling the daylight saving time system.  I take the article
# to mean that they will leave their clocks at 6 hours ahead of UTC.
# From Malik Abdugaliev (2005-09-21):
# Our government cancels daylight saving time 6th of August 2005.
# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Kyrgyz	1992	1996	-	Apr	Sun>=7	0:00s	1:00	-
Rule	Kyrgyz	1992	1996	-	Sep	lastSun	0:00	0	-
Rule	Kyrgyz	1997	2005	-	Mar	lastSun	2:30	1:00	-
Rule	Kyrgyz	1997	2004	-	Oct	lastSun	2:30	0	-
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Bishkek	4:58:24 -	LMT	1924 May  2
			5:00	-	%z	1930 Jun 21
			6:00 RussiaAsia %z	1991 Mar 31  2:00s
			5:00 RussiaAsia	%z	1991 Aug 31  2:00
			5:00	Kyrgyz	%z	2005 Aug 12
			6:00	-	%z

###############################################################################

# Korea (North and South)

# From Annie I. Bang (2006-07-10):
# http://www.koreaherald.com/view.php?ud=200607100012
# Korea ran a daylight saving program from 1949-61 but stopped it
# during the 1950-53 Korean War.  The system was temporarily enforced
# between 1987 and 1988 ...

# From Sanghyuk Jung (2014-10-29):
# https://mm.icann.org/pipermail/tz/2014-October/021830.html
# According to the Korean Wikipedia
# https://ko.wikipedia.org/wiki/한국_표준시
# [oldid=12896437 2014-09-04 08:03 UTC]
# DST in Republic of Korea was as follows....  And I checked old
# newspapers in Korean, all articles correspond with data in Wikipedia.
# For example, the article in 1948 (Korean Language) proved that DST
# started at June 1 in that year.  For another example, the article in
# 1988 said that DST started at 2:00 AM in that year.

# From Phake Nick (2018-10-27):
# 1. According to official announcement from Korean government, the DST end
# date in South Korea should be
# 1955-09-08 without specifying time
# http://theme.archives.go.kr/next/common/viewEbook.do?singleData=N&archiveEventId=0027977557
# 1956-09-29 without specifying time
# http://theme.archives.go.kr/next/common/viewEbook.do?singleData=N&archiveEventId=0027978341
# 1957-09-21 24 o'clock
# http://theme.archives.go.kr/next/common/viewEbook.do?singleData=N&archiveEventId=0027979690#3
# 1958-09-20 24 o'clock
# http://theme.archives.go.kr/next/common/viewEbook.do?singleData=N&archiveEventId=0027981189
# 1959-09-19 24 o'clock
# http://theme.archives.go.kr/next/common/viewEbook.do?singleData=N&archiveEventId=0027982974#2
# 1960-09-17 24 o'clock
# http://theme.archives.go.kr/next/common/viewEbook.do?singleData=N&archiveEventId=0028044104
# ...
# 2.... https://namu.wiki/w/대한민국%20표준시 ... [says]
# when Korea was using GMT+8:30 as standard time, the international
# aviation/marine/meteorological industry in the country refused to
# follow and continued to use GMT+9:00 for interoperability.


# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	ROK	1948	only	-	Jun	 1	 0:00	1:00	D
Rule	ROK	1948	only	-	Sep	12	24:00	0	S
Rule	ROK	1949	only	-	Apr	 3	 0:00	1:00	D
Rule	ROK	1949	1951	-	Sep	Sat>=7	24:00	0	S
Rule	ROK	1950	only	-	Apr	 1	 0:00	1:00	D
Rule	ROK	1951	only	-	May	 6	 0:00	1:00	D
Rule	ROK	1955	only	-	May	 5	 0:00	1:00	D
Rule	ROK	1955	only	-	Sep	 8	24:00	0	S
Rule	ROK	1956	only	-	May	20	 0:00	1:00	D
Rule	ROK	1956	only	-	Sep	29	24:00	0	S
Rule	ROK	1957	1960	-	May	Sun>=1	 0:00	1:00	D
Rule	ROK	1957	1960	-	Sep	Sat>=17	24:00	0	S
Rule	ROK	1987	1988	-	May	Sun>=8	 2:00	1:00	D
Rule	ROK	1987	1988	-	Oct	Sun>=8	 3:00	0	S

# From Paul Eggert (2016-08-23):
# The Korean Wikipedia entry gives the following sources for UT offsets:
#
# 1908: Official Journal Article No. 3994 (decree No. 5)
# 1912: Governor-General of Korea Official Gazette Issue No. 367
#       (Announcement No. 338)
# 1954: Presidential Decree No. 876 (1954-03-17)
# 1961: Law No. 676 (1961-08-07)
#
# (Another source "1987: Law No. 3919 (1986-12-31)" was in the 2014-10-30
# edition of the Korean Wikipedia entry.)
#
# I guessed that time zone abbreviations through 1945 followed the same
# rules as discussed under Taiwan, with nominal switches from JST to KST
# when the respective cities were taken over by the Allies after WWII.
#
# For Pyongyang, guess no changes from World War II until 2015, as we
# have no information otherwise.

# From Steffen Thorsen (2015-08-07):
# According to many news sources, North Korea is going to change to
# the 8:30 time zone on August 15, one example:
# http://www.bbc.com/news/world-asia-33815049
#
# From Paul Eggert (2015-08-15):
# Bells rang out midnight (00:00) Friday as part of the celebrations.  See:
# Talmadge E. North Korea celebrates new time zone, 'Pyongyang Time'
# http://news.yahoo.com/north-korea-celebrates-time-zone-pyongyang-time-164038128.html
# There is no common English-language abbreviation for this time zone.
# Use KST, as that's what we already use for 1954-1961 in ROK.

# From Kang Seonghoon (2018-04-29):
# North Korea will revert its time zone from UTC+8:30 (PYT; Pyongyang
# Time) back to UTC+9 (KST; Korea Standard Time).
#
# From Seo Sanghyeon (2018-04-30):
# Rodong Sinmun 2018-04-30 announced Pyongyang Time transition plan.
# https://www.nknews.org/kcna/wp-content/uploads/sites/5/2018/04/rodong-2018-04-30.pdf
# ... the transition date is 2018-05-05 ...  Citation should be Decree
# No. 2232 of April 30, 2018, of the Presidium of the Supreme People's
# Assembly, as published in Rodong Sinmun.
# From Tim Parenti (2018-04-29):
# It appears to be the front page story at the top in the right-most column.
#
# From Paul Eggert (2018-05-04):
# The BBC reported that the transition was from 23:30 to 24:00 today.
# https://www.bbc.com/news/world-asia-44010705

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Seoul	8:27:52	-	LMT	1908 Apr  1
			8:30	-	KST	1912 Jan  1
			9:00	-	JST	1945 Sep  8
			9:00	ROK	K%sT	1954 Mar 21
			8:30	ROK	K%sT	1961 Aug 10
			9:00	ROK	K%sT
Zone	Asia/Pyongyang	8:23:00 -	LMT	1908 Apr  1
			8:30	-	KST	1912 Jan  1
			9:00	-	JST	1945 Aug 24
			9:00	-	KST	2015 Aug 15 00:00
			8:30	-	KST	2018 May  4 23:30
			9:00	-	KST


# Lebanon
#
# From Saadallah Itani (2023-03-23):
# Lebanon ... announced today delay of Spring forward from March 25 to April 20.
#
# From Paul Eggert (2023-03-27):
# This announcement was by the Lebanese caretaker prime minister Najib Mikati.
# https://www.mtv.com.lb/en/News/Local/1352516/lebanon-postpones-daylight-saving-time-adoption
# A video was later leaked to the media of parliament speaker Nabih Berri
# asking Mikati to postpone DST to aid observance of Ramadan, Mikati objecting
# that this would cause problems such as scheduling airline flights, to which
# Berri interjected, "What flights?"
#
# The change was controversial and led to a partly-sectarian divide.
# Many Lebanese institutions, including the education ministry, the Maronite
# church, and two news channels LCBI and MTV, ignored the announcement and
# went ahead with the long-scheduled spring-forward on March 25/26, some
# arguing that the prime minister had not followed the law because the change
# had not been approved by the cabinet.  Google went with the announcement;
# Apple ignored it.  At least one bank followed the announcement for its doors,
# but ignored the announcement in internal computer systems.
# Beirut international airport listed two times for each departure.
# Dan Azzi wrote "My view is that this whole thing is a Dumb and Dumber movie."
# Eventually the prime minister backed down, said the cabinet had decided to
# stick with its 1998 decision, and that DST would begin midnight March 29/30.
# https://www.nna-leb.gov.lb/en/miscellaneous/604093/lebanon-has-two-times-of-day-amid-daylight-savings
# https://www.cnbc.com/2023/03/27/lebanon-in-two-different-time-zones-as-government-disagrees-on-daylight-savings.html
#
# Although we could model the chaos with two Zones, that would likely cause
# more trouble than it would cure.  Since so many manual clocks and
# computer-based timestamps ignored the announcement, stick with official
# cabinet resolutions in the data while recording the prime minister's
# announcement as a comment.  This is how we treated a similar situation in
# Rio de Janeiro in spring 1993.
#
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Lebanon	1920	only	-	Mar	28	0:00	1:00	S
Rule	Lebanon	1920	only	-	Oct	25	0:00	0	-
Rule	Lebanon	1921	only	-	Apr	3	0:00	1:00	S
Rule	Lebanon	1921	only	-	Oct	3	0:00	0	-
Rule	Lebanon	1922	only	-	Mar	26	0:00	1:00	S
Rule	Lebanon	1922	only	-	Oct	8	0:00	0	-
Rule	Lebanon	1923	only	-	Apr	22	0:00	1:00	S
Rule	Lebanon	1923	only	-	Sep	16	0:00	0	-
Rule	Lebanon	1957	1961	-	May	1	0:00	1:00	S
Rule	Lebanon	1957	1961	-	Oct	1	0:00	0	-
Rule	Lebanon	1972	only	-	Jun	22	0:00	1:00	S
Rule	Lebanon	1972	1977	-	Oct	1	0:00	0	-
Rule	Lebanon	1973	1977	-	May	1	0:00	1:00	S
Rule	Lebanon	1978	only	-	Apr	30	0:00	1:00	S
Rule	Lebanon	1978	only	-	Sep	30	0:00	0	-
Rule	Lebanon	1984	1987	-	May	1	0:00	1:00	S
Rule	Lebanon	1984	1991	-	Oct	16	0:00	0	-
Rule	Lebanon	1988	only	-	Jun	1	0:00	1:00	S
Rule	Lebanon	1989	only	-	May	10	0:00	1:00	S
Rule	Lebanon	1990	1992	-	May	1	0:00	1:00	S
Rule	Lebanon	1992	only	-	Oct	4	0:00	0	-
Rule	Lebanon	1993	max	-	Mar	lastSun	0:00	1:00	S
Rule	Lebanon	1993	1998	-	Sep	lastSun	0:00	0	-
Rule	Lebanon	1999	max	-	Oct	lastSun	0:00	0	-
# This one-time rule, announced by the prime minister first for April 21
# then for March 30, is commented out for reasons described above.
#Rule	Lebanon	2023	only	-	Mar	30	0:00	1:00	S

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Beirut	2:22:00 -	LMT	1880
			2:00	Lebanon	EE%sT

# Brunei
# Malaysia (eastern)
#
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	NBorneo	1935	1941	-	Sep	14	0:00	0:20	-
Rule	NBorneo	1935	1941	-	Dec	14	0:00	0	-
#
# For peninsular Malaysia see Asia/Singapore.
#
# Sabah & Sarawak
# From Paul Eggert (2014-08-12):
# The data entries here are mostly from Shanks & Pottenger, but the 1942, 1945
# and 1982 transition dates are from Mok Ly Yng.
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone Asia/Kuching	7:21:20	-	LMT	1926 Mar
			7:30	-	%z	1933
			8:00 NBorneo	%z	1942 Feb 16
			9:00	-	%z	1945 Sep 12
			8:00	-	%z

# Maldives
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Indian/Maldives	4:54:00 -	LMT	1880 # Malé
			4:54:00	-	MMT	1960 # Malé Mean Time
			5:00	-	%z

# Mongolia

# Shanks & Pottenger say that Mongolia has three time zones, but
# The USNO (1995-12-21) 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):
# General Information Mongolia
# <http://www.mongoliatourism.gov.mn/general.htm> (1999-09)
# "Time: Mongolia has two time zones. Three westernmost provinces of
# Bayan-Ölgii, Uvs, and Hovd are one hour earlier than the capital city, and
# the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus
# eight hours."

# From Rives McDow (1999-12-13):
# Mongolia discontinued the use of daylight savings time in 1999; 1998
# being the last year it was implemented.  The dates of implementation I am
# unsure of, but most probably it was similar to Russia, except for the time
# of implementation may have been different....
# Some maps in the past have indicated that there was an additional time
# zone in the eastern part of Mongolia, including the provinces of Dornod,
# Sükhbaatar, and possibly Khentii.

# From Paul Eggert (1999-12-15):
# Naming and spelling is tricky in Mongolia.
# We'll use Hovd (also spelled Chovd and Khovd) to represent the west zone;
# the capital of the Hovd province is sometimes called Hovd, sometimes Dund-Us,
# and sometimes Jirgalanta (with variant spellings), but the name Hovd
# is good enough for our purposes.

# From Rives McDow (2001-05-13):
# In addition to Mongolia starting daylight savings as reported earlier
# (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),
# there are three time zones.
#
# Provinces [at 7:00]: Bayan-Ölgii, Uvs, Khovd, Zavkhan, Govi-Altai
# Provinces [at 8:00]: Khövsgöl, Bulgan, Arkhangai, Khentii, Töv,
#	Bayankhongor, Övörkhangai, Dundgovi, Dornogovi, Ömnögovi
# Provinces [at 9:00]: Dornod, Sükhbaatar
#
# [The province of Selenge is omitted from the above lists.]

# From Ganbold Ts., Ulaanbaatar (2004-04-17):
# Daylight saving occurs at 02:00 local time last Saturday of March.
# It will change back to normal at 02:00 local time last Saturday of
# September.... As I remember this rule was changed in 2001.
#
# From Paul Eggert (2004-04-17):
# For now, assume Rives McDow's informant got confused about Friday vs
# Saturday, and that his 2001 dates should have 1 added to them.

# From Paul Eggert (2005-07-26):
# We have wildly conflicting information about Mongolia's time zones.
# Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says
# there is only one time zone and that DST is observed, citing Microsoft
# Windows XP as the source.  Risto Nykänen (2005-05-16) reports that
# travelmongolia.org says there are two time zones (UT +07, +08) with no DST.
# Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in
# Washington, DC says there are two time zones, with DST observed.
# He also found
# http://ubpost.mongolnews.mn/index.php?subaction=showcomments&id=1111634894&archive=&start_from=&ucat=1&
# which also says that there is DST, and which has a comment by "Toddius"
# (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones.
# The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT
# and some Eastern provinces are +9 GMT but Sükhbaatar Aimag is SUHK +8.5 GMT.
# The SUKH timezone is new this year, it is one of the few things the
# parliament passed during the tumultuous winter session."
# For now, let's ignore this information, until we have more confirmation.

# From Ganbold Ts. (2007-02-26):
# Parliament of Mongolia has just changed the daylight-saving rule in February.
# They decided not to adopt daylight-saving time....
# http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742

# From Deborah Goldsmith (2008-03-30):
# We received a bug report claiming that the tz database UTC offset for
# Asia/Choibalsan (GMT+09:00) is incorrect, and that it should be GMT
# +08:00 instead. Different sources appear to disagree with the tz
# database on this, e.g.:
#
# https://www.timeanddate.com/worldclock/city.html?n=1026
# http://www.worldtimeserver.com/current_time_in_MN.aspx
#
# both say GMT+08:00.

# From Steffen Thorsen (2008-03-31):
# eznis airways, which operates several domestic flights, has a flight
# schedule here:
# http://www.eznis.com/Container.jsp?id=112
# (click the English flag for English)
#
# There it appears that flights between Choibalsan and Ulaanbaatar arrive
# about 1:35 - 1:50 hours later in local clock time, no matter the
# direction, while Ulaanbaatar-Khovd takes 2 hours in the Eastern
# direction and 3:35 back, which indicates that Ulaanbaatar and Khovd are
# in different time zones (like we know about), while Choibalsan and
# Ulaanbaatar are in the same time zone (correction needed).

# From Arthur David Olson (2008-05-19):
# Assume that Choibalsan is indeed offset by 8:00.

# From Heitor David Pinto (2024-06-23):
# Sources about time zones in Mongolia seem to list one of two conflicting
# configurations.  The first configuration, mentioned in a comment to the TZ
# database in 1999, citing a Mongolian government website, lists the provinces
# of Bayan-Ölgii, Khovd and Uvs in UTC+7, and the rest of the country in
# UTC+8.  The second configuration, mentioned in a comment to the database in
# 2001, lists Bayan-Ölgii, Khovd, Uvs, Govi-Altai and Zavkhan in UTC+7, Dornod
# and Sükhbaatar in UTC+9, and the rest of the country in UTC+8.
#
# The first configuration is still mentioned by several Mongolian travel
# agencies:
# https://www.adventurerider.mn/en/page/about_mongolia
# http://www.naturetours.mn/nt/mongolia.php
# https://www.newjuulchin.mn/web/content/7506?unique=fa24a0f6e96e022a3578ee5195ac879638c734ce
#
# It also matches these flight schedules in 2013:
# http://web.archive.org/web/20130722023600/https://www.hunnuair.com/en/timetabled
# The flight times imply that the airports of Uliastai (Zavkhan), Choibalsan
# (Dornod) and Altai (Govi-Altai) are in the same time zone as Ulaanbaatar,
# and Khovd is one hour behind....
#
# The second configuration was mentioned by an official of the Mongolian
# standards agency in an interview in 2014: https://ikon.mn/n/9v6
# And it's still listed by the Mongolian aviation agency:
# https://ais.mn/files/aip/eAIP/2023-12-25/html/eSUP/ZM-eSUP-23-04-en-MN.html
#
# ... I believe that the first configuration is what is actually observed in
# Mongolia and has been so all along, at least since 1999.  The second
# configuration closely matches the ideal time zone boundaries at 97.5° E and
# 112.5° E but it doesn't seem to be used in practice.

# From Ganbold Tsagaankhuu (2015-03-10):
# It seems like yesterday Mongolian Government meeting has concluded to use
# daylight saving time in Mongolia....  Starting at 2:00AM of last Saturday of
# March 2015, daylight saving time starts.  And 00:00AM of last Saturday of
# September daylight saving time ends.  Source:
# http://zasag.mn/news/view/8969

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Mongol	1983	1984	-	Apr	1	0:00	1:00	-
Rule	Mongol	1983	only	-	Oct	1	0:00	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 Sükhbaatar) 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.

# From Ganbold Tsagaankhuu (2017-02-09):
# Mongolian Government meeting has concluded today to cancel daylight
# saving time adoption in Mongolia.  Source: http://zasag.mn/news/view/16192

Rule	Mongol	1985	1998	-	Mar	lastSun	0:00	1:00	-
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	-
Rule	Mongol	2001	2006	-	Sep	lastSat	2:00	0	-
Rule	Mongol	2002	2006	-	Mar	lastSat	2:00	1:00	-
Rule	Mongol	2015	2016	-	Mar	lastSat	2:00	1:00	-
Rule	Mongol	2015	2016	-	Sep	lastSat	0:00	0	-

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
Zone	Asia/Hovd	6:06:36 -	LMT	1905 Aug
			6:00	-	%z	1978
			7:00	Mongol	%z
# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
Zone	Asia/Ulaanbaatar 7:07:32 -	LMT	1905 Aug
			7:00	-	%z	1978
			8:00	Mongol	%z

# Nepal
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Kathmandu	5:41:16 -	LMT	1920
			5:30	-	%z	1986
			5:45	-	%z

# Pakistan

# From Rives McDow (2002-03-13):
# I have been advised that Pakistan has decided to adopt dst on a
# TRIAL basis for one year, starting 00:01 local time on April 7, 2002
# and ending at 00:01 local time October 6, 2002.  This is what I was
# told, but I believe that the actual time of change may be 00:00; the
# 00:01 was to make it clear which day it was on.

# From Paul Eggert (2002-03-15):
# Jesper Nørgaard found this URL:
# http://www.pak.gov.pk/public/news/app/app06_dec.htm
# (dated 2001-12-06) which says that the Cabinet adopted a scheme "to
# advance the clocks by one hour on the night between the first
# Saturday and Sunday of April and revert to the original position on
# 15th October each year".  This agrees with McDow's 04-07 at 00:00,
# but disagrees about the October transition, and makes it sound like
# it's not on a trial basis.  Also, the "between the first Saturday
# and Sunday of April" phrase, if taken literally, means that the
# transition takes place at 00:00 on the first Sunday on or after 04-02.

# From Paul Eggert (2003-02-09):
# DAWN <http://www.dawn.com/2002/10/06/top13.htm> reported on 2002-10-05
# that 2002 DST ended that day at midnight.  Go with McDow for now.

# From Steffen Thorsen (2003-03-14):
# According to http://www.dawn.com/2003/03/07/top15.htm
# there will be no DST in Pakistan this year:
#
# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
# Rashid Ahmed on Thursday said the cabinet had reversed a previous
# decision to advance clocks by one hour in summer and put them back by
# one hour in winter with the aim of saving light hours and energy.
#
# The minister told a news conference that the experiment had rather
# shown 8 per cent higher consumption of electricity.

# From Alex Krivenyshev (2008-05-15):
#
# Here is an article that Pakistan plan to introduce Daylight Saving Time
# on June 1, 2008 for 3 months.
#
# "... The federal cabinet on Wednesday announced a new conservation plan to
# help reduce load shedding by approving the closure of commercial centres at
# 9pm and moving clocks forward by one hour for the next three months. ...."
#
# http://www.worldtimezone.com/dst_news/dst_news_pakistan01.html
# http://www.dailytimes.com.pk/default.asp?page=2008\05\15\story_15-5-2008_pg1_4

# From Arthur David Olson (2008-05-19):
# XXX--midnight transitions is a guess; 2008 only is a guess.

# From Alexander Krivenyshev (2008-08-28):
# Pakistan government has decided to keep the watches one-hour advanced
# for another 2 months - plan to return to Standard Time on October 31
# instead of August 31.
#
# http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html
# http://dailymailnews.com/200808/28/news/dmbrn03.html

# From Alexander Krivenyshev (2009-04-08):
# Based on previous media reports that "... proposed plan to
# advance clocks by one hour from May 1 will cause disturbance
# to the working schedules rather than bringing discipline in
# official working."
# http://www.thenews.com.pk/daily_detail.asp?id=171280
#
# recent news that instead of May 2009 - Pakistan plan to
# introduce DST from April 15, 2009
#
# FYI: Associated Press Of Pakistan
# April 08, 2009
# Cabinet okays proposal to advance clocks by one hour from April 15
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=73043&Itemid=1
# http://www.worldtimezone.com/dst_news/dst_news_pakistan05.html
#
# ....
# The Federal Cabinet on Wednesday approved the proposal to
# advance clocks in the country by one hour from April 15 to
# conserve energy"

# From Steffen Thorsen (2009-09-17):
# "The News International," Pakistan reports that: "The Federal
# Government has decided to restore the previous time by moving the
# clocks backward by one hour from October 1. A formal announcement to
# this effect will be made after the Prime Minister grants approval in
# this regard."
# http://www.thenews.com.pk/updates.asp?id=87168

# From Alexander Krivenyshev (2009-09-28):
# According to Associated Press Of Pakistan, it is confirmed that
# Pakistan clocks across the country would be turned back by an hour from
# October 1, 2009.
#
# "Clocks to go back one hour from 1 Oct"
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2
# http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm
#
# From Steffen Thorsen (2009-09-29):
# Now they seem to have changed their mind, November 1 is the new date:
# http://www.thenews.com.pk/top_story_detail.asp?Id=24742
# "The country's clocks will be reversed by one hour on November 1.
# Officials of Federal Ministry for Interior told this to Geo News on
# Monday."
#
# And more importantly, it seems that these dates will be kept every year:
# "It has now been decided that clocks will be wound forward by one hour
# on April 15 and reversed by an hour on November 1 every year without
# obtaining prior approval, the officials added."
#
# We have confirmed this year's end date with both with the Ministry of
# Water and Power and the Pakistan Electric Power Company:
# https://www.timeanddate.com/news/time/pakistan-ends-dst09.html

# From Christoph Göhre (2009-10-01):
# [T]he German Consulate General in Karachi reported me today that Pakistan
# will go back to standard time on 1st of November.

# From Steffen Thorsen (2010-03-26):
# Steffen Thorsen wrote:
# > On Thursday (2010-03-25) it was announced that DST would start in
# > Pakistan on 2010-04-01.
# >
# > Then today, the president said that they might have to revert the
# > decision if it is not supported by the parliament. So at the time
# > being, it seems unclear if DST will be actually observed or not - but
# > April 1 could be a more likely date than April 15.
# Now, it seems that the decision to not observe DST in final:
#
# "Govt Withdraws Plan To Advance Clocks"
# http://www.apakistannews.com/govt-withdraws-plan-to-advance-clocks-172041
#
# "People laud PM's announcement to end DST"
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=99374&Itemid=2

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule Pakistan	2002	only	-	Apr	Sun>=2	0:00	1:00	S
Rule Pakistan	2002	only	-	Oct	Sun>=2	0:00	0	-
Rule Pakistan	2008	only	-	Jun	1	0:00	1:00	S
Rule Pakistan	2008	2009	-	Nov	1	0:00	0	-
Rule Pakistan	2009	only	-	Apr	15	0:00	1:00	S

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Karachi	4:28:12 -	LMT	1907
			5:30	-	%z	1942 Sep
			5:30	1:00	%z	1945 Oct 15
			5:30	-	%z	1951 Sep 30
			5:00	-	%z	1971 Mar 26
			5:00 Pakistan	PK%sT	# Pakistan Time

# Palestine

# From Amos Shapir (1998-02-15):
#
# From 1917 until 1948-05-15, all of Palestine, including the parts now
# known as the Gaza Strip and the West Bank, was under British rule.
# Therefore the rules given for Israel for that period, apply there too...
#
# The Gaza Strip was under Egyptian rule between 1948-05-15 until 1967-06-05
# (except a short occupation by Israel from 1956-11 till 1957-03, but no
# time zone was affected then).  It was never formally annexed to Egypt,
# though.
#
# The rest of Palestine was under Jordanian rule at that time, formally
# annexed in 1950 as the West Bank (and the word "Trans" was dropped from
# the country's previous name of "the Hashemite Kingdom of the
# Trans-Jordan").  So the rules for Jordan for that time apply.  Major
# towns in that area are Nablus (Shchem), El-Halil (Hebron), Ramallah, and
# East Jerusalem.
#
# Both areas were occupied by Israel in June 1967, but not annexed (except
# for East Jerusalem).  They were on Israel time since then; there might
# have been a Military Governor's order about time zones, but I'm not aware
# of any (such orders may have been issued semi-annually whenever summer
# time was in effect, but maybe the legal aspect of time was just neglected).
#
# The Palestinian Authority was established in 1993, and got hold of most
# towns in the West Bank and Gaza by 1995.  I know that in order to
# demonstrate...independence, they have been switching to
# summer time and back on a different schedule than Israel's, but I don't
# know when this was started, or what algorithm is used (most likely the
# Jordanian one).
#
# To summarize, the table should probably look something like that:
#
# Area \ when | 1918-1947 | 1948-1967 | 1967-1995 | 1996-
# ------------+-----------+-----------+-----------+-----------
# Israel      | Zion      | Zion      | Zion      | Zion
# West bank   | Zion      | Jordan    | Zion      | Jordan
# Gaza        | Zion      | Egypt     | Zion      | Jordan
#
# I guess more info may be available from the PA's web page (if/when they
# have one).

# 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
# the only differences between it and Gaza that we know about
# occurred before our cutoff date of 1970.
# However, as we get more information, we may need to add entries
# for parts of the West Bank as they transitioned from Israel's rules
# to Palestine's rules.

# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
# forwarded by Ephraim Silverberg:
#
# Despite the fact that Israel changed over to daylight savings time
# last week, the PLO Authority (PA) has decided not to turn its clocks
# one-hour forward at this time.  As a sign of independence from Israeli rule,
# the PA has decided to implement DST in April.

# From Paul Eggert (1999-09-20):
# Daoud Kuttab writes in Holiday havoc
# http://www.jpost.com/com/Archive/22.Apr.1999/Opinion/Article-2.html
# (Jerusalem Post, 1999-04-22) that
# the Palestinian National Authority changed to DST on 1999-04-15.
# I vaguely recall that they switch back in October (sorry, forgot the source).
# For now, let's assume that the spring switch was at 24:00,
# and that they switch at 0:00 on the 3rd Fridays of April and October.

# From Paul Eggert (2005-11-22):
# Starting 2004 transitions are from Steffen Thorsen's web site timeanddate.com.

# From Steffen Thorsen (2005-11-23):
# A user from Gaza reported that Gaza made the change early because of
# the Ramadan.  Next year Ramadan will be even earlier, so I think
# 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.

# From Jesper Nørgaard Welen (2007-09-18):
# According to Steffen Thorsen's web site the Gaza Strip and the rest of the
# Palestinian territories left DST early on 13.th. of September at 2:00.

# From Paul Eggert (2007-09-20):
# My understanding is that Gaza and the West Bank disagree even over when
# the weekend is (Thursday+Friday versus Friday+Saturday), so I'd be a bit
# surprised if they agreed about DST.  But for now, assume they agree.
# For lack of better information, predict that future changes will be
# the 2nd Thursday of September at 02:00.

# From Alexander Krivenyshev (2008-08-28):
# Here is an article, that Mideast running on different clocks at Ramadan.
#
# Gaza Strip (as Egypt) ended DST at midnight Thursday (Aug 28, 2008), while
# the West Bank will end Daylight Saving Time at midnight Sunday (Aug 31, 2008).
#
# http://www.guardian.co.uk/world/feedarticle/7759001
# http://www.abcnews.go.com/International/wireStory?id=5676087
# http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html

# From Alexander Krivenyshev (2009-03-26):
# According to the Palestine News Network (arabic.pnn.ps), Palestinian
# government decided to start Daylight Time on Thursday night March
# 26 and continue until the night of 27 September 2009.
#
# (in Arabic)
# http://arabic.pnn.ps/index.php?option=com_content&task=view&id=50850
#
# (English translation)
# http://www.worldtimezone.com/dst_news/dst_news_westbank01.html

# From Steffen Thorsen (2009-08-31):
# Palestine's Council of Ministers announced that they will revert back to
# winter time on Friday, 2009-09-04.
#
# One news source:
# http://www.safa.ps/ara/?action=showdetail&seid=4158
# (Palestinian press agency, Arabic),
# Google translate: "Decided that the Palestinian government in Ramallah
# headed by Salam Fayyad, the start of work in time for the winter of
# 2009, starting on Friday approved the fourth delay Sept. clock sixty
# minutes per hour as of Friday morning."
#
# We are not sure if Gaza will do the same, last year they had a different
# end date, we will keep this page updated:
# https://www.timeanddate.com/news/time/westbank-gaza-dst-2009.html

# From Alexander Krivenyshev (2009-09-02):
# Seems that Gaza Strip will go back to Winter Time same date as West Bank.
#
# According to Palestinian Ministry Of Interior, West Bank and Gaza Strip plan
# to change time back to Standard time on September 4, 2009.
#
# "Winter time unite the West Bank and Gaza"
# (from Palestinian National Authority):
# http://www.moi.gov.ps/en/?page=633167343250594025&nid=11505
# http://www.worldtimezone.com/dst_news/dst_news_gazastrip02.html

# From Alexander Krivenyshev (2010-03-19):
# According to Voice of Palestine DST will last for 191 days, from March
# 26, 2010 till "the last Sunday before the tenth day of Tishri
# (October), each year" (October 03, 2010?)
#
# http://palvoice.org/forums/showthread.php?t=245697
# (in Arabic)
# http://www.worldtimezone.com/dst_news/dst_news_westbank03.html

# From Steffen Thorsen (2010-03-24):
# ...Ma'an News Agency reports that Hamas cabinet has decided it will
# start one day later, at 12:01am. Not sure if they really mean 12:01am or
# noon though:
#
# http://www.maannews.net/eng/ViewDetails.aspx?ID=271178
# (Ma'an News Agency)
# "At 12:01am Friday, clocks in Israel and the West Bank will change to
# 1:01am, while Gaza clocks will change at 12:01am Saturday morning."

# From Steffen Thorsen (2010-08-11):
# According to several sources, including
# http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
# the clocks were set back one hour at 2010-08-11 00:00:00 local time in
# Gaza and the West Bank.
# Some more background info:
# https://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html

# From Steffen Thorsen (2011-08-26):
# Gaza and the West Bank did go back to standard time in the beginning of
# August, and will now enter daylight saving time again on 2011-08-30
# 00:00 (so two periods of DST in 2011). The pause was because of
# Ramadan.
#
# http://www.maannews.net/eng/ViewDetails.aspx?ID=416217
# Additional info:
# https://www.timeanddate.com/news/time/palestine-dst-2011.html

# From Alexander Krivenyshev (2011-08-27):
# According to the article in The Jerusalem Post:
# "...Earlier this month, the Palestinian government in the West Bank decided to
# move to standard time for 30 days, during Ramadan. The Palestinians in the
# Gaza Strip accepted the change and also moved their clocks one hour back.
# The Hamas government said on Saturday that it won't observe summertime after
# the Muslim feast of Id al-Fitr, which begins on Tuesday..."
# ...
# https://www.jpost.com/MiddleEast/Article.aspx?id=235650
# http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html
# The rules for Egypt are stolen from the 'africa' file.

# From Steffen Thorsen (2011-09-30):
# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
# 00:00).
# So West Bank and Gaza now have the same time again.
#
# Many sources, including:
# http://www.maannews.net/eng/ViewDetails.aspx?ID=424808

# From Steffen Thorsen (2012-03-26):
# Palestinian news sources tell that both Gaza and West Bank will start DST
# on Friday (Thursday midnight, 2012-03-29 24:00).
# Some of many sources in Arabic:
# http://www.samanews.com/index.php?act=Show&id=122638
#
# http://safa.ps/details/news/74352/بدء-التوقيت-الصيفي-بالضفة-وغزة-ليلة-الجمعة.html
#
# Our brief summary:
# https://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html

# From Steffen Thorsen (2013-03-26):
# The following news sources tells that Palestine will "start daylight saving
# time from midnight on Friday, March 29, 2013" (translated).
# [These are in Arabic and are for Gaza and for Ramallah, respectively.]
# http://www.samanews.com/index.php?act=Show&id=154120
# http://safa.ps/details/news/99844/رام-الله-بدء-التوقيت-الصيفي-29-الجاري.html

# From Steffen Thorsen (2013-09-24):
# The Gaza and West Bank are ending DST Thursday at midnight
# (2013-09-27 00:00:00) (one hour earlier than last year...).
# This source in English, says "that winter time will go into effect
# at midnight on Thursday in the West Bank and Gaza Strip":
# http://english.wafa.ps/index.php?action=detail&id=23246
# official source...:
# http://www.palestinecabinet.gov.ps/ar/Views/ViewDetails.aspx?pid=1252

# From Steffen Thorsen (2015-03-03):
# Sources such as http://www.alquds.com/news/article/view/id/548257
# and https://www.raya.ps/ar/news/890705.html say Palestine areas will
# start DST on 2015-03-28 00:00 which is one day later than expected.
#
# From Paul Eggert (2015-03-03):
# https://www.timeanddate.com/time/change/west-bank/ramallah?year=2014
# says that the fall 2014 transition was Oct 23 at 24:00.

# From Hannah Kreitem (2016-03-09):
# http://www.palestinecabinet.gov.ps/WebSite/ar/ViewDetails?ID=31728
# [Google translation]: "The Council also decided to start daylight
# saving in Palestine as of one o'clock on Saturday morning,
# 2016-03-26, to provide the clock 60 minutes ahead."

# From Sharef Mustafa (2016-10-19):
# [T]he Palestinian cabinet decision (Mar 8th 2016) published on
# http://www.palestinecabinet.gov.ps/WebSite/Upload/Decree/GOV_17/16032016134830.pdf
# states that summer time will end on Oct 29th at 01:00.

# From Sharef Mustafa (2018-03-16):
# Palestine summer time will start on Mar 24th 2018 ...
# http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817

# From Even Scharning (2019-03-23):
# http://pnn.ps/news/401130
# http://palweather.ps/ar/node/50136.html
#
# From Sharif Mustafa (2019-03-26):
# The Palestinian cabinet announced today that the switch to DST will
# be on Fri Mar 29th 2019 by advancing the clock by 60 minutes.
# http://palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e54e9ea1-50ee-4137-84df-0d6c78da259b
#
# From Even Scharning (2019-04-10):
# Our source in Palestine said it happened Friday 29 at 00:00 local time....

# From Sharef Mustafa (2019-10-18):
# Palestine summer time will end on midnight Oct 26th 2019 ...
#
# From Steffen Thorsen (2020-10-20):
# Some sources such as these say, and display on clocks, that DST ended at
# midnight last year...
# https://www.amad.ps/ar/post/320006
#
# From Tim Parenti (2020-10-20):
# The report of the Palestinian Cabinet meeting of 2019-10-14 confirms
# a decision on (translated): "The start of the winter time in Palestine, by
# delaying the clock by sixty minutes, starting from midnight on Friday /
# Saturday corresponding to 26/10/2019."
# http://www.palestinecabinet.gov.ps/portal/meeting/details/43948

# From Sharef Mustafa (2020-10-20):
# As per the palestinian cabinet announcement yesterday , the day light saving
# shall [end] on Oct 24th 2020 at 01:00AM by delaying the clock by 60 minutes.
# http://www.palestinecabinet.gov.ps/portal/Meeting/Details/51584

# From Pierre Cashon (2020-10-20):
# The summer time this year started on March 28 at 00:00.
# https://wafa.ps/ar_page.aspx?id=GveQNZa872839351758aGveQNZ
# http://www.palestinecabinet.gov.ps/portal/meeting/details/50284
# The winter time in 2015 started on October 23 at 01:00.
# https://wafa.ps/ar_page.aspx?id=CgpCdYa670694628582aCgpCdY
# http://www.palestinecabinet.gov.ps/portal/meeting/details/27583

# From P Chan (2021-10-18):
# http://wafa.ps/Pages/Details/34701
# Palestine winter time will start from midnight 2021-10-29 (Thursday-Friday).
#
# From Heba Hemad, Palestine Ministry of Telecom & IT (2021-10-20):
# ... winter time will begin in Palestine from Friday 10-29, 01:00 AM
# by 60 minutes backwards.
#
# From Tim Parenti (2021-10-25), per Paul Eggert (2021-10-24):
# Guess future fall transitions at 01:00 on the Friday preceding October's
# last Sunday (i.e., Fri>=23), as this is more consistent with recent practice.

# From Heba Hamad (2022-03-10):
# summer time will begin in Palestine from Sunday 03-27-2022, 00:00 AM.

# From Heba Hamad (2022-08-30):
# winter time will begin in Palestine from Saturday 10-29, 02:00 AM by
# 60 minutes backwards.  Also the state of Palestine adopted the summer
# and winter time for the years: 2023,2024,2025,2026 ...
# https://mm.icann.org/pipermail/tz/attachments/20220830/9f024566/Time-0001.pdf
# (2022-08-31): ... the Saturday before the last Sunday in March and October
# at 2:00 AM ,for the years from 2023 to 2026.
# (2022-09-05): https://mtit.pna.ps/Site/New/1453

# From Heba Hamad (2023-03-22):
# ... summer time will begin in Palestine from Saturday 04-29-2023,
# 02:00 AM by 60 minutes forward.
# From Heba Hemad (2023-10-09):
# ... winter time will begin in Palestine from Saturday 10-28-2023,
# 02:00 AM by 60 minutes back.
#
# From Heba Hamad (2024-01-25):
# the summer time for the years 2024,2025 will begin in Palestine
# from Saturday at 02:00 AM by 60 minutes forward as shown below:
# year date
# 2024 2024-04-20
# 2025 2025-04-12
#
# From Paul Eggert (2024-01-25):
# For now, guess that spring and fall transitions will normally
# continue to use 2022's rules, that during DST Palestine will switch
# to standard time at 02:00 the last Saturday before Ramadan and back
# to DST at 02:00 the second Saturday after Ramadan, and that
# if the normal spring-forward or fall-back transition occurs during
# Ramadan the former is delayed and the latter advanced.
# To implement this, I predicted Ramadan-oriented transition dates for
# 2026 through 2086 by running the following program under GNU Emacs 29.2,
# with the results integrated by hand into the table below.
# Predictions after 2086 are approximated without Ramadan.
#
# (let ((islamic-year 1447))
#   (require 'cal-islam)
#   (while (< islamic-year 1510)
#     (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
#           (b (+ 1 (calendar-islamic-to-absolute (list 10 1 islamic-year))))
#           (saturday 6))
#       (while (/= saturday (mod (setq a (1- a)) 7)))
#       (while (/= saturday (mod b 7))
#         (setq b (1+ b)))
#       (setq b (+ 7 b))
#       (setq a (calendar-gregorian-from-absolute a))
#       (setq b (calendar-gregorian-from-absolute b))
#       (insert
#        (format
#         (concat "Rule Palestine\t%d\tonly\t-\t%s\t%2d\t2:00\t0\t-\n"
#                 "Rule Palestine\t%d\tonly\t-\t%s\t%2d\t2:00\t1:00\tS\n")
#         (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
#         (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
#     (setq islamic-year (+ 1 islamic-year))))

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
Rule EgyptAsia	1957	1958	-	Oct	 1	0:00	0	-
Rule EgyptAsia	1958	only	-	May	 1	0:00	1:00	S
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	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	only	-	Oct	 4	2:00	0	-
Rule Palestine	2006	2007	-	Apr	 1	0:00	1:00	S
Rule Palestine	2006	only	-	Sep	22	0:00	0	-
Rule Palestine	2007	only	-	Sep	13	2:00	0	-
Rule Palestine	2008	2009	-	Mar	lastFri	0:00	1:00	S
Rule Palestine	2008	only	-	Sep	 1	0:00	0	-
Rule Palestine	2009	only	-	Sep	 4	1:00	0	-
Rule Palestine	2010	only	-	Mar	26	0:00	1:00	S
Rule Palestine	2010	only	-	Aug	11	0:00	0	-
Rule Palestine	2011	only	-	Apr	 1	0:01	1:00	S
Rule Palestine	2011	only	-	Aug	 1	0:00	0	-
Rule Palestine	2011	only	-	Aug	30	0:00	1:00	S
Rule Palestine	2011	only	-	Sep	30	0:00	0	-
Rule Palestine	2012	2014	-	Mar	lastThu	24:00	1:00	S
Rule Palestine	2012	only	-	Sep	21	1:00	0	-
Rule Palestine	2013	only	-	Sep	27	0:00	0	-
Rule Palestine	2014	only	-	Oct	24	0:00	0	-
Rule Palestine	2015	only	-	Mar	28	0:00	1:00	S
Rule Palestine	2015	only	-	Oct	23	1:00	0	-
Rule Palestine	2016	2018	-	Mar	Sat<=30	1:00	1:00	S
Rule Palestine	2016	2018	-	Oct	Sat<=30	1:00	0	-
Rule Palestine	2019	only	-	Mar	29	0:00	1:00	S
Rule Palestine	2019	only	-	Oct	Sat<=30	0:00	0	-
Rule Palestine	2020	2021	-	Mar	Sat<=30	0:00	1:00	S
Rule Palestine	2020	only	-	Oct	24	1:00	0	-
Rule Palestine	2021	only	-	Oct	29	1:00	0	-
Rule Palestine	2022	only	-	Mar	27	0:00	1:00	S
Rule Palestine	2022	2035	-	Oct	Sat<=30	2:00	0	-
Rule Palestine	2023	only	-	Apr	29	2:00	1:00	S
Rule Palestine	2024	only	-	Apr	20	2:00	1:00	S
Rule Palestine	2025	only	-	Apr	12	2:00	1:00	S
Rule Palestine	2026	2054	-	Mar	Sat<=30	2:00	1:00	S
Rule Palestine	2036	only	-	Oct	18	2:00	0	-
Rule Palestine	2037	only	-	Oct	10	2:00	0	-
Rule Palestine	2038	only	-	Sep	25	2:00	0	-
Rule Palestine	2039	only	-	Sep	17	2:00	0	-
Rule Palestine	2040	only	-	Sep	 1	2:00	0	-
Rule Palestine	2040	only	-	Oct	20	2:00	1:00	S
Rule Palestine	2040	2067	-	Oct	Sat<=30	2:00	0	-
Rule Palestine	2041	only	-	Aug	24	2:00	0	-
Rule Palestine	2041	only	-	Oct	 5	2:00	1:00	S
Rule Palestine	2042	only	-	Aug	16	2:00	0	-
Rule Palestine	2042	only	-	Sep	27	2:00	1:00	S
Rule Palestine	2043	only	-	Aug	 1	2:00	0	-
Rule Palestine	2043	only	-	Sep	19	2:00	1:00	S
Rule Palestine	2044	only	-	Jul	23	2:00	0	-
Rule Palestine	2044	only	-	Sep	 3	2:00	1:00	S
Rule Palestine	2045	only	-	Jul	15	2:00	0	-
Rule Palestine	2045	only	-	Aug	26	2:00	1:00	S
Rule Palestine	2046	only	-	Jun	30	2:00	0	-
Rule Palestine	2046	only	-	Aug	18	2:00	1:00	S
Rule Palestine	2047	only	-	Jun	22	2:00	0	-
Rule Palestine	2047	only	-	Aug	 3	2:00	1:00	S
Rule Palestine	2048	only	-	Jun	 6	2:00	0	-
Rule Palestine	2048	only	-	Jul	25	2:00	1:00	S
Rule Palestine	2049	only	-	May	29	2:00	0	-
Rule Palestine	2049	only	-	Jul	10	2:00	1:00	S
Rule Palestine	2050	only	-	May	21	2:00	0	-
Rule Palestine	2050	only	-	Jul	 2	2:00	1:00	S
Rule Palestine	2051	only	-	May	 6	2:00	0	-
Rule Palestine	2051	only	-	Jun	24	2:00	1:00	S
Rule Palestine	2052	only	-	Apr	27	2:00	0	-
Rule Palestine	2052	only	-	Jun	 8	2:00	1:00	S
Rule Palestine	2053	only	-	Apr	12	2:00	0	-
Rule Palestine	2053	only	-	May	31	2:00	1:00	S
Rule Palestine	2054	only	-	Apr	 4	2:00	0	-
Rule Palestine	2054	only	-	May	23	2:00	1:00	S
Rule Palestine	2055	only	-	May	 8	2:00	1:00	S
Rule Palestine	2056	only	-	Apr	29	2:00	1:00	S
Rule Palestine	2057	only	-	Apr	14	2:00	1:00	S
Rule Palestine	2058	only	-	Apr	 6	2:00	1:00	S
Rule Palestine	2059	max	-	Mar	Sat<=30	2:00	1:00	S
Rule Palestine	2068	only	-	Oct	20	2:00	0	-
Rule Palestine	2069	only	-	Oct	12	2:00	0	-
Rule Palestine	2070	only	-	Oct	 4	2:00	0	-
Rule Palestine	2071	only	-	Sep	19	2:00	0	-
Rule Palestine	2072	only	-	Sep	10	2:00	0	-
Rule Palestine	2072	only	-	Oct	22	2:00	1:00	S
Rule Palestine	2072	max	-	Oct	Sat<=30	2:00	0	-
Rule Palestine	2073	only	-	Sep	 2	2:00	0	-
Rule Palestine	2073	only	-	Oct	14	2:00	1:00	S
Rule Palestine	2074	only	-	Aug	18	2:00	0	-
Rule Palestine	2074	only	-	Oct	 6	2:00	1:00	S
Rule Palestine	2075	only	-	Aug	10	2:00	0	-
Rule Palestine	2075	only	-	Sep	21	2:00	1:00	S
Rule Palestine	2076	only	-	Jul	25	2:00	0	-
Rule Palestine	2076	only	-	Sep	12	2:00	1:00	S
Rule Palestine	2077	only	-	Jul	17	2:00	0	-
Rule Palestine	2077	only	-	Sep	 4	2:00	1:00	S
Rule Palestine	2078	only	-	Jul	 9	2:00	0	-
Rule Palestine	2078	only	-	Aug	20	2:00	1:00	S
Rule Palestine	2079	only	-	Jun	24	2:00	0	-
Rule Palestine	2079	only	-	Aug	12	2:00	1:00	S
Rule Palestine	2080	only	-	Jun	15	2:00	0	-
Rule Palestine	2080	only	-	Jul	27	2:00	1:00	S
Rule Palestine	2081	only	-	Jun	 7	2:00	0	-
Rule Palestine	2081	only	-	Jul	19	2:00	1:00	S
Rule Palestine	2082	only	-	May	23	2:00	0	-
Rule Palestine	2082	only	-	Jul	11	2:00	1:00	S
Rule Palestine	2083	only	-	May	15	2:00	0	-
Rule Palestine	2083	only	-	Jun	26	2:00	1:00	S
Rule Palestine	2084	only	-	Apr	29	2:00	0	-
Rule Palestine	2084	only	-	Jun	17	2:00	1:00	S
Rule Palestine	2085	only	-	Apr	21	2:00	0	-
Rule Palestine	2085	only	-	Jun	 9	2:00	1:00	S
Rule Palestine	2086	only	-	Apr	13	2:00	0	-
Rule Palestine	2086	only	-	May	25	2:00	1:00	S

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
			2:00	Zion	EET/EEST 1948 May 15
			2:00 EgyptAsia	EE%sT	1967 Jun  5
			2:00	Zion	I%sT	1996
			2:00	Jordan	EE%sT	1999
			2:00 Palestine	EE%sT	2008 Aug 29  0:00
			2:00	-	EET	2008 Sep
			2:00 Palestine	EE%sT	2010
			2:00	-	EET	2010 Mar 27  0:01
			2:00 Palestine	EE%sT	2011 Aug  1
			2:00	-	EET	2012
			2:00 Palestine	EE%sT

Zone	Asia/Hebron	2:20:23	-	LMT	1900 Oct
			2:00	Zion	EET/EEST 1948 May 15
			2:00 EgyptAsia	EE%sT	1967 Jun  5
			2:00	Zion	I%sT	1996
			2:00	Jordan	EE%sT	1999
			2:00 Palestine	EE%sT

# Paracel Is
# no information

# Philippines

# From Paul Eggert (2024-01-21):
# The Spanish initially used American (west-of-Greenwich) time.
# It is unknown what time Manila kept when the British occupied it from
# 1762-10-06 through 1764-04; for now assume it kept American time.
# On 1844-08-16, Narciso Clavería, governor-general of the
# Philippines, issued a proclamation announcing that 1844-12-30 was to
# be immediately followed by 1845-01-01; see R.H. van Gent's
# History of the International Date Line
# https://webspace.science.uu.nl/~gent0113/idl/idl_philippines.htm

# From P Chan (2021-05-10):
# Here's a fairly comprehensive article in Japanese:
#	https://wiki.suikawiki.org/n/Philippine%20Time
# (2021-05-16):
# According to the references listed in the article,
# the periods that the Philippines (Manila) observed DST or used +9 are:
#
# 1936-10-31 24:00 to 1937-01-15 24:00
#	(Proclamation No. 104, Proclamation No. 126)
# 1941-12-15 24:00 to 1945-11-30 24:00
#	(Proclamation No. 789, Proclamation No. 20)
# 1954-04-11 24:00 to 1954-06-04 24:00
#	(Proclamation No. 13, Proclamation No. 33)
# 1977-03-27 24:00 to 1977-09-21 24:00
#	(Proclamation No. 1629, Proclamation No. 1641)
# 1990-05-21 00:00 to 1990-07-28 24:00
#	(National Emergency Memorandum Order No. 17, Executive Order No. 415)
#
# Proclamation No. 104 ... October 30, 1936
#  https://www.officialgazette.gov.ph/1936/10/30/proclamation-no-104-s-1936/
# Proclamation No. 126 ... January 15, 1937
#  https://www.officialgazette.gov.ph/1937/01/15/proclamation-no-126-s-1937/
# Proclamation No. 789 ... December 13, 1941
#  https://www.officialgazette.gov.ph/1941/12/13/proclamation-no-789-s-1941/
# Proclamation No. 20 ... November 11, 1945
#  https://www.officialgazette.gov.ph/1945/11/11/proclamation-no-20-s-1945/
# Proclamation No. 13 ... April 6, 1954
#  https://www.officialgazette.gov.ph/1954/04/06/proclamation-no-13-s-1954/
# Proclamation No. 33 ... June 3, 1954
#  https://www.officialgazette.gov.ph/1954/06/03/proclamation-no-33-s-1954/
# Proclamation No. 1629 ... March 25, 1977
#  https://www.officialgazette.gov.ph/1977/03/25/proclamation-no-1629-s-1977/
# Proclamation No. 1641 ...May 26, 1977
#  https://www.officialgazette.gov.ph/1977/05/26/proclamation-no-1641-s-1977/
# National Emergency Memorandum Order No. 17 ... May 2, 1990
#  https://www.officialgazette.gov.ph/1990/05/02/national-emergency-memorandum-order-no-17-s-1990/
# Executive Order No. 415 ... July 20, 1990
#  https://www.officialgazette.gov.ph/1990/07/20/executive-order-no-415-s-1990/
#
# During WWII, Proclamation No. 789 fixed two periods of DST. The first period
# was set to continue only until January 31, 1942. But Manila was occupied by
# the Japanese earlier in the month....
#
# For the date of the adoption of standard time, Shank[s] gives 1899-05-11.
# The article is not able to state the basis of that. I guess it was based on
# a US War Department Circular issued on that date.
#	https://books.google.com/books?id=JZ1PAAAAYAAJ&pg=RA3-PA8
#
# However, according to other sources, standard time was adopted on
# 1899-09-06.  Also, the LMT was GMT+8:03:52
#	https://books.google.com/books?id=MOYIAQAAIAAJ&pg=PA521
#	https://books.google.com/books?id=lSnqqatpYikC&pg=PA21
#
# From Paul Eggert (2024-09-05):
# The penultimate URL in P Chan's email refers to page 521 of
# Selga M, The Time Service in the Philippines.
# Proc Pan-Pacific Science Congress. Vol. 1 (1923), 519-532.
# It says, "The change from the meridian 120° 58' 04" to the 120th implied a
# change of 3 min. 52s.26 in time; consequently on 6th September, 1899,
# Manila Observatory gave the noon signal 3 min. 52s.26 later than before".
#
# Wikipedia says the US declared Manila liberated on March 4, 1945;
# this doesn't affect clocks, just our time zone abbreviation and DST flag.

# From Paul Goyette (2018-06-15) with URLs updated by Guy Harris (2024-02-15):
# In the Philippines, there is a national law, Republic Act No. 10535
# which declares the official time here as "Philippine Standard Time".
# The act [1] even specifies use of PST as the abbreviation, although
# the FAQ provided by PAGASA [2] uses the "acronym PhST to distinguish
# it from the Pacific Standard Time (PST)."
# [1] https://www.officialgazette.gov.ph/2013/05/15/republic-act-no-10535/
# [2] https://prsd.pagasa.dost.gov.ph/index.php/28-astronomy/302-philippine-standard-time
#
# From Paul Eggert (2018-06-19):
# I surveyed recent news reports, and my impression is that "PST" is
# more popular among reliable English-language news sources.  This is
# not just a measure of Google hit counts: it's also the sizes and
# influence of the sources.  There is no current abbreviation for DST,
# so use "PDT", the usual American style.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Phil	1936	only	-	Oct	31	24:00	1:00	D
Rule	Phil	1937	only	-	Jan	15	24:00	0	S
Rule	Phil	1941	only	-	Dec	15	24:00	1:00	D
# The following three rules were canceled by Japan:
#Rule	Phil	1942	only	-	Jan	31	24:00	0	S
#Rule	Phil	1942	only	-	Mar	 1	 0:00	1:00	D
#Rule	Phil	1942	only	-	Jun	30	24:00	0	S
Rule	Phil	1945	only	-	Nov	30	24:00	0	S
Rule	Phil	1954	only	-	Apr	11	24:00	1:00	D
Rule	Phil	1954	only	-	Jun	 4	24:00	0	S
Rule	Phil	1977	only	-	Mar	27	24:00	1:00	D
Rule	Phil	1977	only	-	Sep	21	24:00	0	S
Rule	Phil	1990	only	-	May	21	 0:00	1:00	D
Rule	Phil	1990	only	-	Jul	28	24:00	0	S
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Manila	-15:56:08 -	LMT	1844 Dec 31
			8:03:52 -	LMT	1899 Sep  6  4:00u
			8:00	Phil	P%sT	1942 Feb 11 24:00
			9:00	-	JST	1945 Mar  4
			8:00	Phil	P%sT

# Bahrain
# Qatar
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Qatar	3:26:08 -	LMT	1920     # Al Dawhah / Doha
			4:00	-	%z	1972 Jun
			3:00	-	%z

# Kuwait
# Saudi Arabia
# Yemen
#
# Japan's year-round bases in Antarctica match this since 1970.
#
# From Paul Eggert (2018-08-29):
# Time in Saudi Arabia and other countries in the Arabian peninsula was not
# standardized until 1968 or so; we don't know exactly when, and possibly it
# has never been made official.  Richard P Hunt, in "Islam city yielding to
# modern times", New York Times (1961-04-09), p 20, wrote that only airlines
# observed standard time, and that people in Jeddah mostly observed quasi-solar
# time, doing so by setting their watches at sunrise to 6 o'clock (or to 12
# o'clock for "Arab" time).
#
# Timekeeping differed depending on who you were and which part of Saudi
# Arabia you were in.  In 1969, Elias Antar wrote that although a common
# practice had been to set one's watch to 12:00 (i.e., midnight) at sunset -
# which meant that the time on one side of a mountain could differ greatly from
# the time on the other side - many foreigners set their watches to 6pm
# instead, while airlines instead used UTC +03 (except in Dhahran, where they
# used UTC +04), Aramco used UTC +03 with DST, and the Trans-Arabian Pipe Line
# Company used Aramco time in eastern Saudi Arabia and airline time in western.
# (The American Military Aid Advisory Group used plain UTC.)  Antar writes,
# "A man named Higgins, so the story goes, used to run a local power
# station. One day, the whole thing became too much for Higgins and he
# assembled his staff and laid down the law. 'I've had enough of this,' he
# shrieked. 'It is now 12 o'clock Higgins Time, and from now on this station is
# going to run on Higgins Time.' And so, until last year, it did."  See:
# Antar E. Dinner at When? Saudi Aramco World, 1969 March/April. 2-3.
# http://archive.aramcoworld.com/issue/196902/dinner.at.when.htm
# Also see: Antar EN. Arabian flying is confusing.
# Port Angeles (WA) Evening News. 1965-03-10. page 3.
#
# The TZ database cannot represent quasi-solar time; airline time is the best
# we can do.  The 1946 foreign air news digest of the U.S. Civil Aeronautics
# Board (OCLC 42299995) reported that the "... Arabian Government, inaugurated
# a weekly Dhahran-Cairo service, via the Saudi Arabian cities of Riyadh and
# Jidda, on March 14, 1947".  Shanks & Pottenger guessed 1950; go with the
# earlier date.
#
# Shanks & Pottenger also state that until 1968-05-01 Saudi Arabia had two
# time zones; the other zone, at UT +04, was in the far eastern part of
# the country.  Presumably this is documenting airline time.  Ignore this,
# as it's before our 1970 cutoff.
#
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Riyadh	3:06:52 -	LMT	1947 Mar 14
			3:00	-	%z

# Singapore
# taken from Mok Ly Yng (2003-10-30)
# https://web.archive.org/web/20190822231045/http://www.math.nus.edu.sg/~mathelmr/teaching/timezone.html
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
			7:00	-	%z	1933 Jan  1
			7:00	0:20	%z	1936 Jan  1
			7:20	-	%z	1941 Sep  1
			7:30	-	%z	1942 Feb 16
			9:00	-	%z	1945 Sep 12
			7:30	-	%z	1981 Dec 31 16:00u
			8:00	-	%z

# Spratly Is
# no information

# Sri Lanka

# From Paul Eggert (2013-02-21):
# Milne says "Madras mean time use from May 1, 1898.  Prior to this Colombo
# mean time, 5h. 4m. 21.9s. F., was used."  But 5:04:21.9 differs considerably
# from Colombo's meridian 5:19:24, so for now ignore Milne and stick with
# Shanks and Pottenger.

# From Paul Eggert (1996-09-03):
# "Sri Lanka advances clock by an hour to avoid blackout"
# (<http://www.virtual-pc.com/lankaweb/news/items/240596-2.html>, 1996-05-24,
# no longer available as of 1999-08-17)
# reported "the country's standard time will be put forward by one hour at
# midnight Friday (1830 GMT) 'in the light of the present power crisis'."
#
# From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted
# by Shamindra in Daily News - Hot News Section
# <news:54rka5$m5h@mtinsc01-mgt.ops.worldnet.att.net> (1996-10-26):
# With effect from 12.30 a.m. on 26th October 1996
# Sri Lanka will be six (06) hours ahead of GMT.

# From Jesper Nørgaard 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/Kolkata'],
# as that zone has agreed with the Tamil areas since our cutoff date of 1970.

# From Sadika Sumanapala (2016-10-19):
# According to http://www.sltime.org (maintained by Measurement Units,
# Standards & Services Department, Sri Lanka) abbreviation for Sri Lanka
# standard time is SLST.
#
# From Paul Eggert (2016-10-18):
# "SLST" seems to be reasonably recent and rarely used outside time
# zone nerd sources.  I searched Google News and found three uses of
# it in the International Business Times of India in February and
# March of this year when discussing cricket match times, but nothing
# since then (though there has been a lot of cricket) and nothing in
# other English-language news sources.  Our old abbreviation "LKT" is
# even worse.  For now, let's use a numeric abbreviation; we can
# switch to "SLST" if it catches on.

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Colombo	5:19:24 -	LMT	1880
			5:19:32	-	MMT	1906        # Moratuwa Mean Time
			5:30	-	%z	1942 Jan  5
			5:30	0:30	%z	1942 Sep
			5:30	1:00	%z	1945 Oct 16  2:00
			5:30	-	%z	1996 May 25  0:00
			6:30	-	%z	1996 Oct 26  0:30
			6:00	-	%z	2006 Apr 15  0:30
			5:30	-	%z

# Syria
# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Syria	1920	1923	-	Apr	Sun>=15	2:00	1:00	S
Rule	Syria	1920	1923	-	Oct	Sun>=1	2:00	0	-
Rule	Syria	1962	only	-	Apr	29	2:00	1:00	S
Rule	Syria	1962	only	-	Oct	1	2:00	0	-
Rule	Syria	1963	1965	-	May	1	2:00	1:00	S
Rule	Syria	1963	only	-	Sep	30	2:00	0	-
Rule	Syria	1964	only	-	Oct	1	2:00	0	-
Rule	Syria	1965	only	-	Sep	30	2:00	0	-
Rule	Syria	1966	only	-	Apr	24	2:00	1:00	S
Rule	Syria	1966	1976	-	Oct	1	2:00	0	-
Rule	Syria	1967	1978	-	May	1	2:00	1:00	S
Rule	Syria	1977	1978	-	Sep	1	2:00	0	-
Rule	Syria	1983	1984	-	Apr	9	2:00	1:00	S
Rule	Syria	1983	1984	-	Oct	1	2:00	0	-
Rule	Syria	1986	only	-	Feb	16	2:00	1:00	S
Rule	Syria	1986	only	-	Oct	9	2:00	0	-
Rule	Syria	1987	only	-	Mar	1	2:00	1:00	S
Rule	Syria	1987	1988	-	Oct	31	2:00	0	-
Rule	Syria	1988	only	-	Mar	15	2:00	1:00	S
Rule	Syria	1989	only	-	Mar	31	2:00	1:00	S
Rule	Syria	1989	only	-	Oct	1	2:00	0	-
Rule	Syria	1990	only	-	Apr	1	2:00	1:00	S
Rule	Syria	1990	only	-	Sep	30	2:00	0	-
Rule	Syria	1991	only	-	Apr	 1	0:00	1:00	S
Rule	Syria	1991	1992	-	Oct	 1	0:00	0	-
Rule	Syria	1992	only	-	Apr	 8	0:00	1:00	S
Rule	Syria	1993	only	-	Mar	26	0:00	1:00	S
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;
# (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	2005	-	Oct	 1	0:00	0	-
Rule	Syria	1997	1998	-	Mar	lastMon	0:00	1:00	S
Rule	Syria	1999	2006	-	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	-
# From Paul Eggert (2007-03-29):
# Today the AP reported "Syria will switch to summertime at midnight Thursday."
# http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
Rule	Syria	2007	only	-	Mar	lastFri	0:00	1:00	S
# From Jesper Nørgaard (2007-10-27):
# The sister center ICARDA of my work CIMMYT is confirming that Syria DST will
# not take place 1st November at 0:00 o'clock but 1st November at 24:00 or
# rather Midnight between Thursday and Friday. This does make more sense than
# having it between Wednesday and Thursday (two workdays in Syria) since the
# weekend in Syria is not Saturday and Sunday, but Friday and Saturday. So now
# it is implemented at midnight of the last workday before weekend...
#
# From Steffen Thorsen (2007-10-27):
# Jesper Nørgaard Welen wrote:
#
# > "Winter local time in Syria will be observed at midnight of Thursday 1
# > November 2007, and the clock will be put back 1 hour."
#
# I found confirmation on this in this gov.sy-article (Arabic):
# http://wehda.alwehda.gov.sy/_print_veiw.asp?FileName=12521710520070926111247
#
# which using Google's translate tools says:
# Council of Ministers also approved the commencement of work on
# identifying the winter time as of Friday, 2/11/2007 where the 60th
# minute delay at midnight Thursday 1/11/2007.
Rule	Syria	2007	only	-	Nov	 Fri>=1	0:00	0	-

# From Stephen Colebourne (2008-03-17):
# For everyone's info, I saw an IATA time zone change for [Syria] for
# this month (March 2008) in the last day or so....
# Country     Time Standard   --- DST Start ---   --- DST End ---  DST
# Name        Zone Variation   Time    Date        Time    Date
# Variation
# Syrian Arab
# Republic    SY    +0200      2200  03APR08       2100  30SEP08   +0300
#                              2200  02APR09       2100  30SEP09   +0300
#                              2200  01APR10       2100  30SEP10   +0300

# From Arthur David Olson (2008-03-17):
# Here's a link to English-language coverage by the Syrian Arab News
# Agency (SANA)...
# http://www.sana.sy/eng/21/2008/03/11/165173.htm
# ...which reads (in part) "The Cabinet approved the suggestion of the
# Ministry of Electricity to begin daylight savings time on Friday April
# 4th, advancing clocks one hour ahead on midnight of Thursday April 3rd."
# Since Syria is two hours east of UTC, the 2200 and 2100 transition times
# shown above match up with midnight in Syria.

# From Arthur David Olson (2008-03-18):
# My best guess at a Syrian rule is "the Friday nearest April 1";
# coding that involves either using a "Mar Fri>=29" construct that old time zone
# compilers can't handle  or having multiple Rules (a la Israel).
# For now, use "Apr Fri>=1", and go with IATA on a uniform Sep 30 end.

# From Steffen Thorsen (2008-10-07):
# Syria has now officially decided to end DST on 2008-11-01 this year,
# according to the following article in the Syrian Arab News Agency (SANA).
#
# The article is in Arabic, and seems to tell that they will go back to
# winter time on 2008-11-01 at 00:00 local daylight time (delaying/setting
# clocks back 60 minutes).
#
# http://sana.sy/ara/2/2008/10/07/195459.htm

# From Steffen Thorsen (2009-03-19):
# Syria will start DST on 2009-03-27 00:00 this year according to many sources,
# two examples:
#
# http://www.sana.sy/eng/21/2009/03/17/217563.htm
# (English, Syrian Arab News # Agency)
# http://thawra.alwehda.gov.sy/_View_news2.asp?FileName=94459258720090318012209
# (Arabic, gov-site)
#
# We have not found any sources saying anything about when DST ends this year.
#
# Our summary
# https://www.timeanddate.com/news/time/syria-dst-starts-march-27-2009.html

# From Steffen Thorsen (2009-10-27):
# The Syrian Arab News Network on 2009-09-29 reported that Syria will
# revert back to winter (standard) time on midnight between Thursday
# 2009-10-29 and Friday 2009-10-30:
# http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)

# From Arthur David Olson (2009-10-28):
# We'll see if future DST switching times turn out to be end of the last
# Thursday of the month or the start of the last Friday of the month or
# something else. For now, use the start of the last Friday.

# From Steffen Thorsen (2010-03-17):
# The "Syrian News Station" reported on 2010-03-16 that the Council of
# Ministers has decided that Syria will start DST on midnight Thursday
# 2010-04-01: (midnight between Thursday and Friday):
# http://sns.sy/sns/?path=news/read/11421 (Arabic)

# From Steffen Thorsen (2012-03-26):
# Today, Syria's government announced that they will start DST early on Friday
# (00:00). This is a bit earlier than the past two years.
#
# From Syrian Arab News Agency, in Arabic:
# http://www.sana.sy/ara/2/2012/03/26/408215.htm
#
# Our brief summary:
# https://www.timeanddate.com/news/time/syria-dst-2012.html

# From Steffen Thorsen (2022-10-05):
# Syria is adopting year-round DST, starting this autumn....
# From https://www.enabbaladi.net/archives/607812
# "This [the decision] came after the weekly government meeting today,
# Tuesday 4 October ..."
#
# From Paul Eggert (2022-10-05):
# Like Jordan, model this as a transition from EEST +03 (DST) to plain +03
# (non-DST) at the point where DST would otherwise have ended.

Rule	Syria	2008	only	-	Apr	Fri>=1	0:00	1:00	S
Rule	Syria	2008	only	-	Nov	1	0:00	0	-
Rule	Syria	2009	only	-	Mar	lastFri	0:00	1:00	S
Rule	Syria	2010	2011	-	Apr	Fri>=1	0:00	1:00	S
Rule	Syria	2012	2022	-	Mar	lastFri	0:00	1:00	S
Rule	Syria	2009	2022	-	Oct	lastFri	0:00	0	-

# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Damascus	2:25:12 -	LMT	1920 # Dimashq
			2:00	Syria	EE%sT	2022 Oct 28 0:00
			3:00	-	%z

# Tajikistan
# From Shanks & Pottenger.
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Dushanbe	4:35:12 -	LMT	1924 May  2
			5:00	-	%z	1930 Jun 21
			6:00 RussiaAsia %z	1991 Mar 31  2:00s
			5:00	1:00	%z	1991 Sep  9  2:00s
			5:00	-	%z

# Cambodia
# Christmas I
# Laos
# Thailand
# Vietnam (northern)
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Bangkok	6:42:04	-	LMT	1880
			6:42:04	-	BMT	1920 Apr # Bangkok Mean Time
			7:00	-	%z

# Turkmenistan
# From Shanks & Pottenger.
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Ashgabat	3:53:32 -	LMT	1924 May  2 # or Ashkhabad
			4:00	-	%z	1930 Jun 21
			5:00 RussiaAsia	%z	1991 Mar 31  2:00
			4:00 RussiaAsia	%z	1992 Jan 19  2:00
			5:00	-	%z

# Oman
# Réunion
# Seychelles
# United Arab Emirates
#
# The Crozet Is also observe Réunion time; see the 'antarctica' file.
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Dubai	3:41:12 -	LMT	1920
			4:00	-	%z

# Uzbekistan
# Byalokoz 1919 says Uzbekistan was 4:27:53.
# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
Zone	Asia/Samarkand	4:27:53 -	LMT	1924 May  2
			4:00	-	%z	1930 Jun 21
			5:00	-	%z	1981 Apr  1
			5:00	1:00	%z	1981 Oct  1
			6:00	-	%z	1982 Apr  1
			5:00 RussiaAsia	%z	1992
			5:00	-	%z
# Milne says Tashkent was 4:37:10.8.
		#STDOFF	4:37:10.8
Zone	Asia/Tashkent	4:37:11 -	LMT	1924 May  2
			5:00	-	%z	1930 Jun 21
			6:00 RussiaAsia	%z	1991 Mar 31  2:00
			5:00 RussiaAsia	%z	1992
			5:00	-	%z

# Vietnam (southern)

# From Paul Eggert (2014-10-04):
# Milne gives 7:16:56 for the meridian of Saigon in 1899, as being
# used in Lower Laos, Cambodia, and Annam.  But this is quite a ways
# from Saigon's location.  For now, ignore this and stick with Shanks
# and Pottenger for LMT before 1906.

# From Arthur David Olson (2008-03-18):
# The English-language name of Vietnam's most populous city is "Ho Chi Minh
# City"; use Ho_Chi_Minh below to avoid a name of more than 14 characters.

# From Paul Eggert (2024-01-14) after a 2014 heads-up from Trần Ngọc Quân
# and a 2024-01-14 heads-up from Đoàn Trần Công Danh:
# Trần Tiến Bình's authoritative book "Lịch Việt Nam: thế kỷ XX-XXI (1901-2100)"
# (Nhà xuất bản Văn Hoá - Thông Tin, Hanoi, 2005), pp 49-50,
# is quoted verbatim in:
# http://www.thoigian.com.vn/?mPage=P80D01
# is translated by Brian Inglis in:
# https://mm.icann.org/pipermail/tz/2014-October/021654.html
# and is the basis for the information below.
#
# The 1906 transition was effective July 1 and standardized Indochina to
# Phù Liễn Observatory, legally 104° 17' 17" east of Paris.
# It's unclear whether this meant legal Paris Mean Time (00:09:21) or
# the Paris Meridian; for now guess the former and round the exact
# 07:06:30.1333... to 07:06:30.13 as the legal spec used 66 2/3 ms precision.
# which is used below even though the modern-day Phù Liễn Observatory
# is closer to 07:06:31.  Abbreviate Phù Liễn Mean Time as PLMT.
#
# The following transitions occurred in Indochina in general (before 1954)
# and in South Vietnam in particular (after 1954):
# To 07:00 on 1911-05-01.
# To 08:00 on 1942-12-31 at 23:00.
# To 09:00 on 1945-03-14 at 23:00.
# To 07:00 on 1945-09-02 in Vietnam.
# To 08:00 on 1947-04-01 in French-controlled Indochina.
# To 07:00 on 1955-07-01 in South Vietnam.
# To 08:00 on 1959-12-31 at 23:00 in South Vietnam.
# To 07:00 on 1975-06-13 in South Vietnam.
#
# Trần cites the following sources; it's unclear which supplied the info above.
#
#   Hoàng Xuân Hãn: "Lịch và lịch Việt Nam". Tập san Khoa học Xã hội,
#   No. 9, Paris, February 1982.
#
#   Lê Thành Lân: "Lịch và niên biểu lịch sử hai mươi thế kỷ (0001-2010)",
#   NXB Thống kê, Hanoi, 2000.
#
#   Lê Thành Lân: "Lịch hai thế kỷ (1802-2010) và các lịch vĩnh cửu",
#   NXB Thuận Hoá, Huế, 1995.
#
# Here is the decision for the September 1945 transition:
# Võ Nguyên Giáp, Việt Nam Dân Quốc Công Báo, No. 1 (1945-09-29), page 13
# http://baochi.nlv.gov.vn/baochi/cgi-bin/baochi?a=d&d=JwvzO19450929.2.5&dliv=none
# It says that on 1945-09-01 at 24:00, Vietnam moved back two hours, to +07.
# It also mentions a 1945-03-29 decree (by a Japanese Governor-General)
# to set the time zone to +09, but does not say whether that decree
# merely legalized an earlier change to +09.
#
# July 1955 transition:
# Ngô Đình Diệm, Công Báo Việt Nam, No. 92 (1955-07-02), page 1780-1781
# Ordinance (Dụ) No. 46 (1955-06-25)
# http://ddsnext.crl.edu/titles/32341#?c=0&m=29&s=0&cv=4&r=0&xywh=-89%2C342%2C1724%2C1216
# It says that on 1955-07-01 at 01:00, South Vietnam moved back 1 hour (to +07).
#
# December 1959 transition:
# Ngô Đình Diệm, Công Báo Việt Nam Cộng Hòa, 1960 part 1 (1960-01-02), page 62
# Decree (Sắc lệnh) No. 362-TTP (1959-12-30)
# http://ddsnext.crl.edu/titles/32341#?c=0&m=138&s=0&cv=793&r=0&xywh=-54%2C1504%2C1705%2C1202
# It says that on 1959-12-31 at 23:00, South Vietnam moved forward 1 hour (to +08).


# Zone	NAME		STDOFF	RULES	FORMAT	[UNTIL]
		#STDOFF	7:06:30.13
Zone Asia/Ho_Chi_Minh	7:06:30 -	LMT	1906 Jul  1
			7:06:30	-	PLMT	1911 May  1 # Phù Liễn MT
			7:00	-	%z	1942 Dec 31 23:00
			8:00	-	%z	1945 Mar 14 23:00
			9:00	-	%z	1945 Sep  1 24:00
			7:00	-	%z	1947 Apr  1
			8:00	-	%z	1955 Jul  1 01:00
			7:00	-	%z	1959 Dec 31 23:00
			8:00	-	%z	1975 Jun 13
			7:00	-	%z

# From Paul Eggert (2019-02-19):
#
# The Ho Chi Minh entry suffices for most purposes as it agrees with all of
# Vietnam since 1975-06-13.  Presumably clocks often changed in south Vietnam
# in the early 1970s as locations changed hands during the war; however the
# details are unknown and would likely be too voluminous for this database.
#
# For timestamps in north Vietnam back to 1970 (the tzdb cutoff),
# use Asia/Bangkok; see the VN entries in the file zone1970.tab.
# For timestamps before 1970, see Asia/Hanoi in the file 'backzone'.
