summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Bishop <stuart@stuartbishop.net>2014-05-15 14:52:43 +0700
committerStuart Bishop <stuart@stuartbishop.net>2014-05-15 14:52:43 +0700
commit66ca1c5cea8bd738fe0f90a237f574e03a2dab99 (patch)
treee187d114f3a502ac09c902ced1e206d9e1797a84
parent766a3160ed86adbfc8498734f1c84650f02728ca (diff)
downloadpytz-66ca1c5cea8bd738fe0f90a237f574e03a2dab99.tar.gz
Import IANA 2014c database
-rw-r--r--elsie.nci.nih.gov/src/Makefile4
-rw-r--r--elsie.nci.nih.gov/src/NEWS24
-rw-r--r--elsie.nci.nih.gov/src/africa43
-rw-r--r--elsie.nci.nih.gov/src/asia16
-rw-r--r--elsie.nci.nih.gov/src/europe4
-rw-r--r--elsie.nci.nih.gov/src/private.h5
-rw-r--r--elsie.nci.nih.gov/src/zdump.c4
-rw-r--r--elsie.nci.nih.gov/src/zic.c70
8 files changed, 102 insertions, 68 deletions
diff --git a/elsie.nci.nih.gov/src/Makefile b/elsie.nci.nih.gov/src/Makefile
index ffe57db..3cdd845 100644
--- a/elsie.nci.nih.gov/src/Makefile
+++ b/elsie.nci.nih.gov/src/Makefile
@@ -6,7 +6,7 @@
PACKAGE= tzcode
# Version numbers of the code and data distributions.
-VERSION= 2014b
+VERSION= 2014c
# Email address for bug reports.
BUGEMAIL= tz@iana.org
@@ -443,7 +443,7 @@ check_web: $(WEB_PAGES)
clean_misc:
rm -f core *.o *.out \
- date tzselect version.h zdump zic yearistype
+ date tzselect version.h zdump zic yearistype libtz.a
clean: clean_misc
rm -fr tzpublic
diff --git a/elsie.nci.nih.gov/src/NEWS b/elsie.nci.nih.gov/src/NEWS
index de7400a..b092ba8 100644
--- a/elsie.nci.nih.gov/src/NEWS
+++ b/elsie.nci.nih.gov/src/NEWS
@@ -1,6 +1,30 @@
News for the tz database
+Release 2014c - 2014-05-13 07:44:13 -0700
+
+ Changes affecting near-future time stamps
+
+ Egypt observes DST starting May 15. (Thanks to Ahmad El-Dardiry.)
+ Details have not been announced, except that DST will not be observed
+ during Ramadan. Guess that DST will stop during the same Ramadan dates as
+ Morocco, and that Egypt's future spring and fall transitions will be the
+ same as 2010 when it last observed DST, namely April's last Friday at
+ 00:00 to September's last Thursday at 23:00 standard time. Also, guess
+ that Ramadan transitions will be at 00:00 standard time.
+
+ Changes affecting code
+
+ zic now generates transitions for minimum time values, eliminating guesswork
+ when handling low-valued time stamps. (Thanks to Arthur David Olson.)
+
+ Port to Cygwin sans glibc. (Thanks to Arthur David Olson.)
+
+ Changes affecting commentary and documentation
+
+ Remove now-confusing comment about Jordan. (Thanks to Oleksii Nochovnyi.)
+
+
Release 2014b - 2014-03-24 21:28:50 -0700
Changes affecting near-future time stamps
diff --git a/elsie.nci.nih.gov/src/africa b/elsie.nci.nih.gov/src/africa
index fbf0b65..83bff2e 100644
--- a/elsie.nci.nih.gov/src/africa
+++ b/elsie.nci.nih.gov/src/africa
@@ -335,11 +335,54 @@ Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 -
# http://www.worldtimezone.com/dst_news/dst_news_egypt02.html
# </a>
+# From Ahmad El-Dardiry (2014-05-07):
+# Egypt is to change back to Daylight system on May 15
+# http://english.ahram.org.eg/NewsContent/1/64/100735/Egypt/Politics-/Egypts-government-to-reapply-daylight-saving-time-.aspx
+
+# From Gunther Vermier (2015-05-13):
+# our Egypt office confirms that the change will be at 15 May "midnight" (24:00)
+
+# From Paul Eggert (2014-05-13):
+# Sarah El Deeb and Lee Keath of AP report that the Egyptian government says
+# the change is because of blackouts in Cairo, even though Ahram Online (cited
+# above) says DST had no affect on electricity consumption. The AP story says
+# DST will not be observed during Ramadan. There is no information about when
+# DST will end. See:
+# http://abcnews.go.com/International/wireStory/el-sissi-pushes-egyptians-line-23614833
+#
+# For now, guess that later transitions will use 2010's rules, and that
+# Egypt will agree with Morocco (see below) about the date Ramadan starts and
+# ends, though (unlike Morocco) it will switch at 00:00 standard time. In
+# Egypt the spring-forward transitions are removed for 2020-2022, when the
+# guessed spring-forward date falls during the estimated Ramadan, and all
+# transitions removed for 2023-2038, where the estimated Ramadan falls entirely
+# outside the guessed daylight-saving time. Ramadan intrudes on the guessed
+# DST starting in 2039, but that's beyond our somewhat-arbitrary cutoff.
+
Rule Egypt 2008 only - Aug lastThu 23:00s 0 -
Rule Egypt 2009 only - Aug 20 23:00s 0 -
Rule Egypt 2010 only - Aug 11 0:00 0 -
Rule Egypt 2010 only - Sep 10 0:00 1:00 S
Rule Egypt 2010 only - Sep lastThu 23:00s 0 -
+Rule Egypt 2014 only - May 15 24:00 1:00 S
+Rule Egypt 2014 only - Jun 29 0:00s 0 -
+Rule Egypt 2014 only - Jul 29 0:00s 1:00 S
+Rule Egypt 2014 max - Sep lastThu 23:00s 0 -
+Rule Egypt 2015 2019 - Apr lastFri 0:00s 1:00 S
+Rule Egypt 2015 only - Jun 18 0:00s 0 -
+Rule Egypt 2015 only - Jul 18 0:00s 1:00 S
+Rule Egypt 2016 only - Jun 7 0:00s 0 -
+Rule Egypt 2016 only - Jul 7 0:00s 1:00 S
+Rule Egypt 2017 only - May 27 0:00s 0 -
+Rule Egypt 2017 only - Jun 26 0:00s 1:00 S
+Rule Egypt 2018 only - May 16 0:00s 0 -
+Rule Egypt 2018 only - Jun 15 0:00s 1:00 S
+Rule Egypt 2019 only - May 6 0:00s 0 -
+Rule Egypt 2019 only - Jun 5 0:00s 1:00 S
+Rule Egypt 2020 only - May 24 0:00s 1:00 S
+Rule Egypt 2021 only - May 13 0:00s 1:00 S
+Rule Egypt 2022 only - May 3 0:00s 1:00 S
+Rule Egypt 2023 max - Apr lastFri 0:00s 1:00 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Cairo 2:05:09 - LMT 1900 Oct
diff --git a/elsie.nci.nih.gov/src/asia b/elsie.nci.nih.gov/src/asia
index 3bd7e7d..24566ca 100644
--- a/elsie.nci.nih.gov/src/asia
+++ b/elsie.nci.nih.gov/src/asia
@@ -1347,22 +1347,6 @@ Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
# "Jordan will switch to winter time on Friday, October 27".
#
-# From Phil Pizzey (2009-04-02):
-# ...I think I may have spotted an error in the timezone data for
-# Jordan.
-# The current (2009d) asia file shows Jordan going to daylight
-# saving
-# time on the last Thursday in March.
-#
-# Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S
-#
-# However timeanddate.com, which I usually find reliable, shows Jordan
-# going to daylight saving time on the last Friday in March since 2002.
-# Please see
-# <a href="http://www.timeanddate.com/worldclock/timezone.html?n=11">
-# http://www.timeanddate.com/worldclock/timezone.html?n=11
-# </a>
-
# From Steffen Thorsen (2009-04-02):
# This single one might be good enough, (2009-03-24, Arabic):
# <a href="http://petra.gov.jo/Artical.aspx?Lng=2&Section=8&Artical=95279">
diff --git a/elsie.nci.nih.gov/src/europe b/elsie.nci.nih.gov/src/europe
index f9a3392..bfc596a 100644
--- a/elsie.nci.nih.gov/src/europe
+++ b/elsie.nci.nih.gov/src/europe
@@ -2966,6 +2966,10 @@ Zone Europe/Simferopol 2:16:24 - LMT 1880
# From Alexander Krivenyshev (2014-03-17):
# time change at 2:00 (2am) on March 30, 2014
# http://vz.ru/news/2014/3/17/677464.html
+# From Paul Eggert (2014-03-30):
+# Simferopol and Sevastopol reportedly changed their central town clocks
+# late the previous day, but this appears to have been ceremonial
+# and the discrepancies are small enough to not worry about.
2:00 EU EE%sT 2014 Mar 30 2:00
4:00 - MSK
diff --git a/elsie.nci.nih.gov/src/private.h b/elsie.nci.nih.gov/src/private.h
index 1a85c88..4e8f4ae 100644
--- a/elsie.nci.nih.gov/src/private.h
+++ b/elsie.nci.nih.gov/src/private.h
@@ -120,8 +120,9 @@
*/
#ifndef HAVE_STDINT_H
#define HAVE_STDINT_H \
- (199901 <= __STDC_VERSION__ || \
- 2 < (__GLIBC__ + (0 < __GLIBC_MINOR__)))
+ (199901 <= __STDC_VERSION__ \
+ || 2 < __GLIBC__ + (1 <= __GLIBC_MINOR__) \
+ || __CYGWIN__)
#endif /* !defined HAVE_STDINT_H */
#if HAVE_STDINT_H
diff --git a/elsie.nci.nih.gov/src/zdump.c b/elsie.nci.nih.gov/src/zdump.c
index 209b79d..c48ac84 100644
--- a/elsie.nci.nih.gov/src/zdump.c
+++ b/elsie.nci.nih.gov/src/zdump.c
@@ -36,7 +36,9 @@
#ifndef HAVE_STDINT_H
# define HAVE_STDINT_H \
- (199901 <= __STDC_VERSION__ || 2 < (__GLIBC__ + (0 < __GLIBC_MINOR__)))
+ (199901 <= __STDC_VERSION__ \
+ || 2 < __GLIBC__ + (1 <= __GLIBC_MINOR__) \
+ || __CYGWIN__)
#endif
#if HAVE_STDINT_H
# include "stdint.h"
diff --git a/elsie.nci.nih.gov/src/zic.c b/elsie.nci.nih.gov/src/zic.c
index 34b3dc1..7e0f97f 100644
--- a/elsie.nci.nih.gov/src/zic.c
+++ b/elsie.nci.nih.gov/src/zic.c
@@ -962,8 +962,6 @@ gethms(const char *string, const char *const errstring, const int signable)
error(_("time overflow"));
return 0;
}
- if (noise && hh == HOURSPERDAY && mm == 0 && ss == 0)
- warning(_("24:00 not handled by pre-1998 versions of zic"));
if (noise && (hh > HOURSPERDAY ||
(hh == HOURSPERDAY && (mm != 0 || ss != 0))))
warning(_("values over 24 hours not handled by pre-2007 versions of zic"));
@@ -1482,17 +1480,11 @@ writezone(const char *const name, const char *const string, char version)
fromi = 0;
while (fromi < timecnt && attypes[fromi].at < min_time)
++fromi;
- /*
- ** Remember that type 0 is reserved.
- */
- if (isdsts[1] == 0)
- while (fromi < timecnt && attypes[fromi].type == 1)
- ++fromi; /* handled by default rule */
for ( ; fromi < timecnt; ++fromi) {
- if (toi != 0 && ((attypes[fromi].at +
+ if (toi > 1 && ((attypes[fromi].at +
gmtoffs[attypes[toi - 1].type]) <=
- (attypes[toi - 1].at + gmtoffs[toi == 1 ? 0
- : attypes[toi - 2].type]))) {
+ (attypes[toi - 1].at +
+ gmtoffs[attypes[toi - 2].type]))) {
attypes[toi - 1].type =
attypes[fromi].type;
continue;
@@ -1503,6 +1495,9 @@ writezone(const char *const name, const char *const string, char version)
}
timecnt = toi;
}
+ if (noise && timecnt > 1200)
+ warning(_("pre-2014 clients may mishandle"
+ " more than 1200 transition times"));
/*
** Transfer.
*/
@@ -1534,6 +1529,13 @@ writezone(const char *const name, const char *const string, char version)
--timecnt32;
++timei32;
}
+ /*
+ ** Output an INT32_MIN "transition" if appropriate--see below.
+ */
+ if (timei32 > 0 && ats[timei32] > INT32_MIN) {
+ --timei32;
+ ++timecnt32;
+ }
while (leapcnt32 > 0 && !is32(trans[leapcnt32 - 1]))
--leapcnt32;
while (leapcnt32 > 0 && !is32(trans[leapi32])) {
@@ -1588,11 +1590,7 @@ writezone(const char *const name, const char *const string, char version)
}
thistimelim = thistimei + thistimecnt;
thisleaplim = thisleapi + thisleapcnt;
- /*
- ** Remember that type 0 is reserved.
- */
- writetype[0] = FALSE;
- for (i = 1; i < typecnt; ++i)
+ for (i = 0; i < typecnt; ++i)
writetype[i] = thistimecnt == timecnt;
if (thistimecnt == 0) {
/*
@@ -1608,11 +1606,8 @@ writezone(const char *const name, const char *const string, char version)
/*
** For America/Godthab and Antarctica/Palmer
*/
- /*
- ** Remember that type 0 is reserved.
- */
if (thistimei == 0)
- writetype[1] = TRUE;
+ writetype[0] = TRUE;
}
#ifndef LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH
/*
@@ -1662,26 +1657,8 @@ writezone(const char *const name, const char *const string, char version)
}
#endif /* !defined LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH */
thistypecnt = 0;
- /*
- ** Potentially, set type 0 to that of lowest-valued time.
- */
- if (thistimei > 0) {
- for (i = 1; i < typecnt; ++i)
- if (writetype[i] && !isdsts[i])
- break;
- if (i != types[thistimei - 1]) {
- i = types[thistimei - 1];
- gmtoffs[0] = gmtoffs[i];
- isdsts[0] = isdsts[i];
- ttisstds[0] = ttisstds[i];
- ttisgmts[0] = ttisgmts[i];
- abbrinds[0] = abbrinds[i];
- writetype[0] = TRUE;
- writetype[i] = FALSE;
- }
- }
for (i = 0; i < typecnt; ++i)
- typemap[i] = writetype[i] ? thistypecnt++ : 0;
+ typemap[i] = writetype[i] ? thistypecnt++ : -1;
for (i = 0; i < sizeof indmap / sizeof indmap[0]; ++i)
indmap[i] = -1;
thischarcnt = 0;
@@ -1725,7 +1702,12 @@ writezone(const char *const name, const char *const string, char version)
#undef DO
for (i = thistimei; i < thistimelim; ++i)
if (pass == 1)
- puttzcode(ats[i], fp);
+ /*
+ ** Output an INT32_MIN "transition"
+ ** if appropriate--see above.
+ */
+ puttzcode(((ats[i] < INT32_MIN) ?
+ INT32_MIN : ats[i]), fp);
else puttzcode64(ats[i], fp);
for (i = thistimei; i < thistimelim; ++i) {
unsigned char uc;
@@ -2104,11 +2086,6 @@ outzone(const struct zone * const zpfirst, const int zonecount)
updateminmax(leapminyear);
updateminmax(leapmaxyear + (leapmaxyear < ZIC_MAX));
}
- /*
- ** Reserve type 0.
- */
- gmtoffs[0] = isdsts[0] = ttisstds[0] = ttisgmts[0] = abbrinds[0] = -1;
- typecnt = 1;
for (i = 0; i < zonecount; ++i) {
zp = &zpfirst[i];
if (i < zonecount - 1)
@@ -2208,8 +2185,7 @@ outzone(const struct zone * const zpfirst, const int zonecount)
if (usestart) {
addtt(starttime, type);
usestart = FALSE;
- } else if (stdoff != 0)
- addtt(min_time, type);
+ } else addtt(min_time, type);
} else for (year = min_year; year <= max_year; ++year) {
if (useuntil && year > zp->z_untilrule.r_hiyear)
break;