summaryrefslogtreecommitdiff
path: root/ext/date/lib
diff options
context:
space:
mode:
authorLior Kaplan <kaplanlior@gmail.com>2014-01-11 13:43:40 +0200
committerLior Kaplan <kaplanlior@gmail.com>2014-01-11 13:43:40 +0200
commit650fb41a77b3a24ab4130b05fff243b64b241877 (patch)
treeb64f1cfd733f03ce1db807733ddf87ac8d62a903 /ext/date/lib
parent5a58c4dae727fbc8bd92770c2708baf9e7688857 (diff)
downloadphp-650fb41a77b3a24ab4130b05fff243b64b241877.tar.gz
Imported Upstream version 5.5.8+dfsgupstream/5.5.8+dfsg
Diffstat (limited to 'ext/date/lib')
-rw-r--r--ext/date/lib/dow.c12
-rw-r--r--ext/date/lib/interval.c103
-rw-r--r--ext/date/lib/parse_iso_intervals.c4
-rw-r--r--ext/date/lib/parse_iso_intervals.re2
-rw-r--r--ext/date/lib/timelib.h2
-rw-r--r--ext/date/lib/timezonedb.h730
-rw-r--r--ext/date/lib/unixtime2tm.c9
7 files changed, 482 insertions, 380 deletions
diff --git a/ext/date/lib/dow.c b/ext/date/lib/dow.c
index b6c2d6968..6c296a2ba 100644
--- a/ext/date/lib/dow.c
+++ b/ext/date/lib/dow.c
@@ -25,10 +25,7 @@ static int m_table_leap[13] = { -1, 6, 2, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5 }; /* 1
static timelib_sll century_value(timelib_sll j)
{
- timelib_sll i = j - 17;
- timelib_sll c = (4 - i * 2 + (i + 1) / 4) % 7;
-
- return c < 0 ? c + 7 : c;
+ return 6 - (j % 4) * 2;
}
static timelib_sll timelib_day_of_week_ex(timelib_sll y, timelib_sll m, timelib_sll d, int iso)
@@ -36,11 +33,8 @@ static timelib_sll timelib_day_of_week_ex(timelib_sll y, timelib_sll m, timelib_
timelib_sll c1, y1, m1, dow;
/* Only valid for Gregorian calendar, commented out as we don't handle
- * julian calendar. We just return the 'wrong' day of week to be
- * consistent.
- if (y < 1753) {
- return -1;
- } */
+ * Julian calendar. We just return the 'wrong' day of week to be
+ * consistent. */
c1 = century_value(y / 100);
y1 = (y % 100);
m1 = timelib_is_leap(y) ? m_table_leap[m] : m_table_common[m];
diff --git a/ext/date/lib/interval.c b/ext/date/lib/interval.c
index 96867ba2b..dce62f3a2 100644
--- a/ext/date/lib/interval.c
+++ b/ext/date/lib/interval.c
@@ -25,7 +25,7 @@ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two)
{
timelib_rel_time *rt;
timelib_time *swp;
- timelib_sll dst_h_corr = 0, dst_m_corr = 0;
+ timelib_sll dst_corr = 0 ,dst_h_corr = 0, dst_m_corr = 0;
timelib_time one_backup, two_backup;
rt = timelib_rel_time_ctor();
@@ -43,8 +43,9 @@ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two)
&& (strcmp(one->tz_info->name, two->tz_info->name) == 0)
&& (one->z != two->z))
{
- dst_h_corr = (two->z - one->z) / 3600;
- dst_m_corr = ((two->z - one->z) % 3600) / 60;
+ dst_corr = two->z - one->z;
+ dst_h_corr = dst_corr / 3600;
+ dst_m_corr = (dst_corr % 3600) / 60;
}
/* Save old TZ info */
@@ -57,16 +58,108 @@ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two)
rt->y = two->y - one->y;
rt->m = two->m - one->m;
rt->d = two->d - one->d;
- rt->h = two->h - one->h + dst_h_corr;
- rt->i = two->i - one->i + dst_m_corr;
+ rt->h = two->h - one->h;
+ rt->i = two->i - one->i;
rt->s = two->s - one->s;
+ if (one_backup.dst == 0 && two_backup.dst == 1 && two->sse >= one->sse + 86400 - dst_corr) {
+ rt->h += dst_h_corr;
+ rt->i += dst_m_corr;
+ }
+
rt->days = abs(floor((one->sse - two->sse - (dst_h_corr * 3600) - (dst_m_corr * 60)) / 86400));
timelib_do_rel_normalize(rt->invert ? one : two, rt);
+ /* We need to do this after normalisation otherwise we can't get "24H" */
+ if (one_backup.dst == 1 && two_backup.dst == 0 && two->sse >= one->sse + 86400) {
+ if (two->sse < one->sse + 86400 - dst_corr) {
+ rt->d--;
+ rt->h = 24;
+ } else {
+ rt->h += dst_h_corr;
+ rt->i += dst_m_corr;
+ }
+ }
+
/* Restore old TZ info */
memcpy(one, &one_backup, sizeof(one_backup));
memcpy(two, &two_backup, sizeof(two_backup));
return rt;
}
+
+timelib_time *timelib_add(timelib_time *old_time, timelib_rel_time *interval)
+{
+ int bias = 1;
+ timelib_time *t = timelib_time_clone(old_time);
+
+ if (interval->have_weekday_relative || interval->have_special_relative) {
+ memcpy(&t->relative, interval, sizeof(struct timelib_rel_time));
+ } else {
+ if (interval->invert) {
+ bias = -1;
+ }
+ memset(&t->relative, 0, sizeof(struct timelib_rel_time));
+ t->relative.y = interval->y * bias;
+ t->relative.m = interval->m * bias;
+ t->relative.d = interval->d * bias;
+ t->relative.h = interval->h * bias;
+ t->relative.i = interval->i * bias;
+ t->relative.s = interval->s * bias;
+ }
+ t->have_relative = 1;
+ t->sse_uptodate = 0;
+
+ timelib_update_ts(t, NULL);
+
+// printf("%lld %lld %d\n", old_time->dst, t->dst, (t->sse - old_time->sse));
+ /* Adjust for backwards DST changeover */
+ if (old_time->dst == 1 && t->dst == 0 && !interval->y && !interval->m && !interval->d) {
+ t->sse -= old_time->z;
+ t->sse += t->z;
+ }
+
+ timelib_update_from_sse(t);
+ t->have_relative = 0;
+
+ return t;
+}
+
+timelib_time *timelib_sub(timelib_time *old_time, timelib_rel_time *interval)
+{
+ int bias = 1;
+ timelib_time *t = timelib_time_clone(old_time);
+
+ if (interval->invert) {
+ bias = -1;
+ }
+
+ memset(&t->relative, 0, sizeof(struct timelib_rel_time));
+ t->relative.y = 0 - (interval->y * bias);
+ t->relative.m = 0 - (interval->m * bias);
+ t->relative.d = 0 - (interval->d * bias);
+ t->relative.h = 0 - (interval->h * bias);
+ t->relative.i = 0 - (interval->i * bias);
+ t->relative.s = 0 - (interval->s * bias);
+ t->have_relative = 1;
+ t->sse_uptodate = 0;
+
+ timelib_update_ts(t, NULL);
+
+ /* Adjust for backwards DST changeover */
+ if (old_time->dst == 1 && t->dst == 0 && !interval->y && !interval->m && !interval->d) {
+ t->sse -= old_time->z;
+ t->sse += t->z;
+ }
+ /* Adjust for forwards DST changeover */
+ if (old_time->dst == 0 && t->dst == 1 && !interval->y && !interval->m && !interval->d ) {
+ t->sse -= old_time->z;
+ t->sse += t->z;
+ }
+
+ timelib_update_from_sse(t);
+
+ t->have_relative = 0;
+
+ return t;
+}
diff --git a/ext/date/lib/parse_iso_intervals.c b/ext/date/lib/parse_iso_intervals.c
index fedad043c..e669c855a 100644
--- a/ext/date/lib/parse_iso_intervals.c
+++ b/ext/date/lib/parse_iso_intervals.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Sun Mar 31 10:48:17 2013 */
+/* Generated by re2c 0.13.5 on Wed Nov 27 11:14:23 2013 */
#line 1 "ext/date/lib/parse_iso_intervals.re"
/*
+----------------------------------------------------------------------+
@@ -380,7 +380,7 @@ yy6:
break;
}
ptr++;
- } while (*ptr);
+ } while (!s->errors->error_count && *ptr);
s->have_period = 1;
TIMELIB_DEINIT;
return TIMELIB_PERIOD;
diff --git a/ext/date/lib/parse_iso_intervals.re b/ext/date/lib/parse_iso_intervals.re
index e50ab37d3..cbbf8781b 100644
--- a/ext/date/lib/parse_iso_intervals.re
+++ b/ext/date/lib/parse_iso_intervals.re
@@ -348,7 +348,7 @@ isoweek = year4 "-"? "W" weekofyear;
break;
}
ptr++;
- } while (*ptr);
+ } while (!s->errors->error_count && *ptr);
s->have_period = 1;
TIMELIB_DEINIT;
return TIMELIB_PERIOD;
diff --git a/ext/date/lib/timelib.h b/ext/date/lib/timelib.h
index dfb7dc030..3f8e1254e 100644
--- a/ext/date/lib/timelib.h
+++ b/ext/date/lib/timelib.h
@@ -138,5 +138,7 @@ int timelib_astro_rise_set_altitude(timelib_time *time, double lon, double lat,
/* from interval.c */
timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two);
+timelib_time *timelib_add(timelib_time *t, timelib_rel_time *interval);
+timelib_time *timelib_sub(timelib_time *t, timelib_rel_time *interval);
#endif
diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h
index 91884a935..4a4b04188 100644
--- a/ext/date/lib/timezonedb.h
+++ b/ext/date/lib/timezonedb.h
@@ -232,355 +232,355 @@ const timelib_tzdb_index_entry timezonedb_idx_builtin[579] = {
{ "Asia/Aden" , 0x018C91 },
{ "Asia/Almaty" , 0x018CE6 },
{ "Asia/Amman" , 0x018E65 },
- { "Asia/Anadyr" , 0x019037 },
- { "Asia/Aqtau" , 0x01921C },
- { "Asia/Aqtobe" , 0x01941B },
- { "Asia/Ashgabat" , 0x0195D3 },
- { "Asia/Ashkhabad" , 0x0196F0 },
- { "Asia/Baghdad" , 0x01980D },
- { "Asia/Bahrain" , 0x019982 },
- { "Asia/Baku" , 0x0199E8 },
- { "Asia/Bangkok" , 0x019CD0 },
- { "Asia/Beirut" , 0x019D25 },
- { "Asia/Bishkek" , 0x01A032 },
- { "Asia/Brunei" , 0x01A1DE },
- { "Asia/Calcutta" , 0x01A240 },
- { "Asia/Choibalsan" , 0x01A2B9 },
- { "Asia/Chongqing" , 0x01A432 },
- { "Asia/Chungking" , 0x01A521 },
- { "Asia/Colombo" , 0x01A5D0 },
- { "Asia/Dacca" , 0x01A66C },
- { "Asia/Damascus" , 0x01A712 },
- { "Asia/Dhaka" , 0x01AA62 },
- { "Asia/Dili" , 0x01AB08 },
- { "Asia/Dubai" , 0x01AB92 },
- { "Asia/Dushanbe" , 0x01ABE7 },
- { "Asia/Gaza" , 0x01ACEA },
- { "Asia/Harbin" , 0x01B03D },
- { "Asia/Hebron" , 0x01B124 },
- { "Asia/Ho_Chi_Minh" , 0x01B480 },
- { "Asia/Hong_Kong" , 0x01B4F8 },
- { "Asia/Hovd" , 0x01B6BA },
- { "Asia/Irkutsk" , 0x01B832 },
- { "Asia/Istanbul" , 0x01BA18 },
- { "Asia/Jakarta" , 0x01BE05 },
- { "Asia/Jayapura" , 0x01BEAF },
- { "Asia/Jerusalem" , 0x01BF4B },
- { "Asia/Kabul" , 0x01C27A },
- { "Asia/Kamchatka" , 0x01C2CB },
- { "Asia/Karachi" , 0x01C4A7 },
- { "Asia/Kashgar" , 0x01C55C },
- { "Asia/Kathmandu" , 0x01C62D },
- { "Asia/Katmandu" , 0x01C693 },
- { "Asia/Khandyga" , 0x01C6F9 },
- { "Asia/Kolkata" , 0x01C91E },
- { "Asia/Krasnoyarsk" , 0x01C997 },
- { "Asia/Kuala_Lumpur" , 0x01CB7F },
- { "Asia/Kuching" , 0x01CC3C },
- { "Asia/Kuwait" , 0x01CD2A },
- { "Asia/Macao" , 0x01CD7F },
- { "Asia/Macau" , 0x01CEBA },
- { "Asia/Magadan" , 0x01CFF5 },
- { "Asia/Makassar" , 0x01D1D7 },
- { "Asia/Manila" , 0x01D29C },
- { "Asia/Muscat" , 0x01D321 },
- { "Asia/Nicosia" , 0x01D376 },
- { "Asia/Novokuznetsk" , 0x01D65E },
- { "Asia/Novosibirsk" , 0x01D860 },
- { "Asia/Omsk" , 0x01DA4B },
- { "Asia/Oral" , 0x01DC32 },
- { "Asia/Phnom_Penh" , 0x01DE02 },
- { "Asia/Pontianak" , 0x01DE7A },
- { "Asia/Pyongyang" , 0x01DF3C },
- { "Asia/Qatar" , 0x01DFA9 },
- { "Asia/Qyzylorda" , 0x01E00F },
- { "Asia/Rangoon" , 0x01E1E5 },
- { "Asia/Riyadh" , 0x01E25D },
- { "Asia/Saigon" , 0x01E2B2 },
- { "Asia/Sakhalin" , 0x01E32A },
- { "Asia/Samarkand" , 0x01E521 },
- { "Asia/Seoul" , 0x01E657 },
- { "Asia/Shanghai" , 0x01E6FB },
- { "Asia/Singapore" , 0x01E7DB },
- { "Asia/Taipei" , 0x01E892 },
- { "Asia/Tashkent" , 0x01E9AA },
- { "Asia/Tbilisi" , 0x01EADB },
- { "Asia/Tehran" , 0x01EC95 },
- { "Asia/Tel_Aviv" , 0x01EF03 },
- { "Asia/Thimbu" , 0x01F232 },
- { "Asia/Thimphu" , 0x01F298 },
- { "Asia/Tokyo" , 0x01F2FE },
- { "Asia/Ujung_Pandang" , 0x01F387 },
- { "Asia/Ulaanbaatar" , 0x01F404 },
- { "Asia/Ulan_Bator" , 0x01F55F },
- { "Asia/Urumqi" , 0x01F6AC },
- { "Asia/Ust-Nera" , 0x01F773 },
- { "Asia/Vientiane" , 0x01F978 },
- { "Asia/Vladivostok" , 0x01F9F0 },
- { "Asia/Yakutsk" , 0x01FBDC },
- { "Asia/Yekaterinburg" , 0x01FDC1 },
- { "Asia/Yerevan" , 0x01FFCC },
- { "Atlantic/Azores" , 0x0201CC },
- { "Atlantic/Bermuda" , 0x0206CF },
- { "Atlantic/Canary" , 0x0209B0 },
- { "Atlantic/Cape_Verde" , 0x020C86 },
- { "Atlantic/Faeroe" , 0x020CFF },
- { "Atlantic/Faroe" , 0x020FA3 },
- { "Atlantic/Jan_Mayen" , 0x021247 },
- { "Atlantic/Madeira" , 0x021579 },
- { "Atlantic/Reykjavik" , 0x021A82 },
- { "Atlantic/South_Georgia" , 0x021C3B },
- { "Atlantic/St_Helena" , 0x021E4D },
- { "Atlantic/Stanley" , 0x021C7F },
- { "Australia/ACT" , 0x021EA2 },
- { "Australia/Adelaide" , 0x0221BF },
- { "Australia/Brisbane" , 0x0224EB },
- { "Australia/Broken_Hill" , 0x0225B2 },
- { "Australia/Canberra" , 0x0228F0 },
- { "Australia/Currie" , 0x022C0D },
- { "Australia/Darwin" , 0x022F40 },
- { "Australia/Eucla" , 0x022FC6 },
- { "Australia/Hobart" , 0x02309B },
- { "Australia/LHI" , 0x0233F9 },
- { "Australia/Lindeman" , 0x023694 },
- { "Australia/Lord_Howe" , 0x023775 },
- { "Australia/Melbourne" , 0x023A20 },
- { "Australia/North" , 0x023D45 },
- { "Australia/NSW" , 0x023DB9 },
- { "Australia/Perth" , 0x0240D6 },
- { "Australia/Queensland" , 0x0241AE },
- { "Australia/South" , 0x02425A },
- { "Australia/Sydney" , 0x024577 },
- { "Australia/Tasmania" , 0x0248B4 },
- { "Australia/Victoria" , 0x024BF9 },
- { "Australia/West" , 0x024F16 },
- { "Australia/Yancowinna" , 0x024FCC },
- { "Brazil/Acre" , 0x0252EE },
- { "Brazil/DeNoronha" , 0x0253F2 },
- { "Brazil/East" , 0x025512 },
- { "Brazil/West" , 0x0257EF },
- { "Canada/Atlantic" , 0x0258E7 },
- { "Canada/Central" , 0x025DCF },
- { "Canada/East-Saskatchewan" , 0x0266D9 },
- { "Canada/Eastern" , 0x0261E9 },
- { "Canada/Mountain" , 0x026862 },
- { "Canada/Newfoundland" , 0x026BD8 },
- { "Canada/Pacific" , 0x027103 },
- { "Canada/Saskatchewan" , 0x02751C },
- { "Canada/Yukon" , 0x0276A5 },
- { "CET" , 0x0279A8 },
- { "Chile/Continental" , 0x027CB1 },
- { "Chile/EasterIsland" , 0x02804C },
- { "CST6CDT" , 0x02838E },
- { "Cuba" , 0x0286DF },
- { "EET" , 0x028A52 },
- { "Egypt" , 0x028D05 },
- { "Eire" , 0x028FC8 },
- { "EST" , 0x0294D9 },
- { "EST5EDT" , 0x02951D },
- { "Etc/GMT" , 0x02986E },
- { "Etc/GMT+0" , 0x02993A },
- { "Etc/GMT+1" , 0x0299C4 },
- { "Etc/GMT+10" , 0x029A51 },
- { "Etc/GMT+11" , 0x029ADF },
- { "Etc/GMT+12" , 0x029B6D },
- { "Etc/GMT+2" , 0x029C88 },
- { "Etc/GMT+3" , 0x029D14 },
- { "Etc/GMT+4" , 0x029DA0 },
- { "Etc/GMT+5" , 0x029E2C },
- { "Etc/GMT+6" , 0x029EB8 },
- { "Etc/GMT+7" , 0x029F44 },
- { "Etc/GMT+8" , 0x029FD0 },
- { "Etc/GMT+9" , 0x02A05C },
- { "Etc/GMT-0" , 0x0298F6 },
- { "Etc/GMT-1" , 0x02997E },
- { "Etc/GMT-10" , 0x029A0A },
- { "Etc/GMT-11" , 0x029A98 },
- { "Etc/GMT-12" , 0x029B26 },
- { "Etc/GMT-13" , 0x029BB4 },
- { "Etc/GMT-14" , 0x029BFB },
- { "Etc/GMT-2" , 0x029C42 },
- { "Etc/GMT-3" , 0x029CCE },
- { "Etc/GMT-4" , 0x029D5A },
- { "Etc/GMT-5" , 0x029DE6 },
- { "Etc/GMT-6" , 0x029E72 },
- { "Etc/GMT-7" , 0x029EFE },
- { "Etc/GMT-8" , 0x029F8A },
- { "Etc/GMT-9" , 0x02A016 },
- { "Etc/GMT0" , 0x0298B2 },
- { "Etc/Greenwich" , 0x02A0A2 },
- { "Etc/UCT" , 0x02A0E6 },
- { "Etc/Universal" , 0x02A12A },
- { "Etc/UTC" , 0x02A16E },
- { "Etc/Zulu" , 0x02A1B2 },
- { "Europe/Amsterdam" , 0x02A1F6 },
- { "Europe/Andorra" , 0x02A634 },
- { "Europe/Athens" , 0x02A8B0 },
- { "Europe/Belfast" , 0x02ABF3 },
- { "Europe/Belgrade" , 0x02B12A },
- { "Europe/Berlin" , 0x02B3F3 },
- { "Europe/Bratislava" , 0x02B757 },
- { "Europe/Brussels" , 0x02BA89 },
- { "Europe/Bucharest" , 0x02BEC0 },
- { "Europe/Budapest" , 0x02C1EA },
- { "Europe/Busingen" , 0x02C55D },
- { "Europe/Chisinau" , 0x02C814 },
- { "Europe/Copenhagen" , 0x02CBA2 },
- { "Europe/Dublin" , 0x02CEAC },
- { "Europe/Gibraltar" , 0x02D3BD },
- { "Europe/Guernsey" , 0x02D814 },
- { "Europe/Helsinki" , 0x02DD4B },
- { "Europe/Isle_of_Man" , 0x02E001 },
- { "Europe/Istanbul" , 0x02E538 },
- { "Europe/Jersey" , 0x02E925 },
- { "Europe/Kaliningrad" , 0x02EE5C },
- { "Europe/Kiev" , 0x02F0C2 },
- { "Europe/Lisbon" , 0x02F3D9 },
- { "Europe/Ljubljana" , 0x02F8DD },
- { "Europe/London" , 0x02FBA6 },
- { "Europe/Luxembourg" , 0x0300DD },
- { "Europe/Madrid" , 0x030533 },
- { "Europe/Malta" , 0x0308F9 },
- { "Europe/Mariehamn" , 0x030CB2 },
- { "Europe/Minsk" , 0x030F68 },
- { "Europe/Monaco" , 0x031176 },
- { "Europe/Moscow" , 0x0315B1 },
- { "Europe/Nicosia" , 0x031802 },
- { "Europe/Oslo" , 0x031AEA },
- { "Europe/Paris" , 0x031E1C },
- { "Europe/Podgorica" , 0x032262 },
- { "Europe/Prague" , 0x03252B },
- { "Europe/Riga" , 0x03285D },
- { "Europe/Rome" , 0x032BA2 },
- { "Europe/Samara" , 0x032F65 },
- { "Europe/San_Marino" , 0x033198 },
- { "Europe/Sarajevo" , 0x03355B },
- { "Europe/Simferopol" , 0x033824 },
- { "Europe/Skopje" , 0x033B4F },
- { "Europe/Sofia" , 0x033E18 },
- { "Europe/Stockholm" , 0x034120 },
- { "Europe/Tallinn" , 0x0343CF },
- { "Europe/Tirane" , 0x034709 },
- { "Europe/Tiraspol" , 0x034A0F },
- { "Europe/Uzhgorod" , 0x034D9D },
- { "Europe/Vaduz" , 0x0350B4 },
- { "Europe/Vatican" , 0x035363 },
- { "Europe/Vienna" , 0x035726 },
- { "Europe/Vilnius" , 0x035A53 },
- { "Europe/Volgograd" , 0x035D92 },
- { "Europe/Warsaw" , 0x035F92 },
- { "Europe/Zagreb" , 0x036373 },
- { "Europe/Zaporozhye" , 0x03663C },
- { "Europe/Zurich" , 0x03697D },
- { "Factory" , 0x036C2C },
- { "GB" , 0x036C9D },
- { "GB-Eire" , 0x0371D4 },
- { "GMT" , 0x03770B },
- { "GMT+0" , 0x0377D7 },
- { "GMT-0" , 0x037793 },
- { "GMT0" , 0x03774F },
- { "Greenwich" , 0x03781B },
- { "Hongkong" , 0x03785F },
- { "HST" , 0x037A21 },
- { "Iceland" , 0x037A65 },
- { "Indian/Antananarivo" , 0x037C1E },
- { "Indian/Chagos" , 0x037C92 },
- { "Indian/Christmas" , 0x037CF4 },
- { "Indian/Cocos" , 0x037D38 },
- { "Indian/Comoro" , 0x037D7C },
- { "Indian/Kerguelen" , 0x037DD1 },
- { "Indian/Mahe" , 0x037E26 },
- { "Indian/Maldives" , 0x037E7B },
- { "Indian/Mauritius" , 0x037ED0 },
- { "Indian/Mayotte" , 0x037F46 },
- { "Indian/Reunion" , 0x037F9B },
- { "Iran" , 0x037FF0 },
- { "Israel" , 0x03825E },
- { "Jamaica" , 0x03858D },
- { "Japan" , 0x038652 },
- { "Kwajalein" , 0x0386DB },
- { "Libya" , 0x03873E },
- { "MET" , 0x038847 },
- { "Mexico/BajaNorte" , 0x038B50 },
- { "Mexico/BajaSur" , 0x038EB9 },
- { "Mexico/General" , 0x0390FE },
- { "MST" , 0x03935C },
- { "MST7MDT" , 0x0393A0 },
- { "Navajo" , 0x0396F1 },
- { "NZ" , 0x039A6A },
- { "NZ-CHAT" , 0x039DE8 },
- { "Pacific/Apia" , 0x03A0D0 },
- { "Pacific/Auckland" , 0x03A26C },
- { "Pacific/Chatham" , 0x03A5F8 },
- { "Pacific/Chuuk" , 0x03A8EF },
- { "Pacific/Easter" , 0x03A948 },
- { "Pacific/Efate" , 0x03ACA6 },
- { "Pacific/Enderbury" , 0x03AD6C },
- { "Pacific/Fakaofo" , 0x03ADDA },
- { "Pacific/Fiji" , 0x03AE2B },
- { "Pacific/Funafuti" , 0x03AFBE },
- { "Pacific/Galapagos" , 0x03B002 },
- { "Pacific/Gambier" , 0x03B07A },
- { "Pacific/Guadalcanal" , 0x03B0DF },
- { "Pacific/Guam" , 0x03B134 },
- { "Pacific/Honolulu" , 0x03B18A },
- { "Pacific/Johnston" , 0x03B201 },
- { "Pacific/Kiritimati" , 0x03B280 },
- { "Pacific/Kosrae" , 0x03B2EB },
- { "Pacific/Kwajalein" , 0x03B348 },
- { "Pacific/Majuro" , 0x03B3B4 },
- { "Pacific/Marquesas" , 0x03B413 },
- { "Pacific/Midway" , 0x03B47A },
- { "Pacific/Nauru" , 0x03B504 },
- { "Pacific/Niue" , 0x03B57C },
- { "Pacific/Norfolk" , 0x03B5DA },
- { "Pacific/Noumea" , 0x03B62F },
- { "Pacific/Pago_Pago" , 0x03B6BF },
- { "Pacific/Palau" , 0x03B748 },
- { "Pacific/Pitcairn" , 0x03B78C },
- { "Pacific/Pohnpei" , 0x03B7E1 },
- { "Pacific/Ponape" , 0x03B836 },
- { "Pacific/Port_Moresby" , 0x03B87B },
- { "Pacific/Rarotonga" , 0x03B8BF },
- { "Pacific/Saipan" , 0x03B99B },
- { "Pacific/Samoa" , 0x03B9FE },
- { "Pacific/Tahiti" , 0x03BA87 },
- { "Pacific/Tarawa" , 0x03BAEC },
- { "Pacific/Tongatapu" , 0x03BB40 },
- { "Pacific/Truk" , 0x03BBCC },
- { "Pacific/Wake" , 0x03BC11 },
- { "Pacific/Wallis" , 0x03BC61 },
- { "Pacific/Yap" , 0x03BCA5 },
- { "Poland" , 0x03BCEA },
- { "Portugal" , 0x03C0CB },
- { "PRC" , 0x03C5C7 },
- { "PST8PDT" , 0x03C678 },
- { "ROC" , 0x03C9C9 },
- { "ROK" , 0x03CAE1 },
- { "Singapore" , 0x03CB85 },
- { "Turkey" , 0x03CC3C },
- { "UCT" , 0x03D029 },
- { "Universal" , 0x03D06D },
- { "US/Alaska" , 0x03D0B1 },
- { "US/Aleutian" , 0x03D41A },
- { "US/Arizona" , 0x03D780 },
- { "US/Central" , 0x03D80E },
- { "US/East-Indiana" , 0x03E218 },
- { "US/Eastern" , 0x03DD19 },
- { "US/Hawaii" , 0x03E482 },
- { "US/Indiana-Starke" , 0x03E4F3 },
- { "US/Michigan" , 0x03E864 },
- { "US/Mountain" , 0x03EB9B },
- { "US/Pacific" , 0x03EF14 },
- { "US/Pacific-New" , 0x03F319 },
- { "US/Samoa" , 0x03F71E },
- { "UTC" , 0x03F7A7 },
- { "W-SU" , 0x03FA9E },
- { "WET" , 0x03F7EB },
- { "Zulu" , 0x03FCD8 },
+ { "Asia/Anadyr" , 0x01911B },
+ { "Asia/Aqtau" , 0x019300 },
+ { "Asia/Aqtobe" , 0x0194FF },
+ { "Asia/Ashgabat" , 0x0196B7 },
+ { "Asia/Ashkhabad" , 0x0197D4 },
+ { "Asia/Baghdad" , 0x0198F1 },
+ { "Asia/Bahrain" , 0x019A66 },
+ { "Asia/Baku" , 0x019ACC },
+ { "Asia/Bangkok" , 0x019DB4 },
+ { "Asia/Beirut" , 0x019E09 },
+ { "Asia/Bishkek" , 0x01A116 },
+ { "Asia/Brunei" , 0x01A2C2 },
+ { "Asia/Calcutta" , 0x01A324 },
+ { "Asia/Choibalsan" , 0x01A39D },
+ { "Asia/Chongqing" , 0x01A516 },
+ { "Asia/Chungking" , 0x01A605 },
+ { "Asia/Colombo" , 0x01A6B4 },
+ { "Asia/Dacca" , 0x01A750 },
+ { "Asia/Damascus" , 0x01A7F6 },
+ { "Asia/Dhaka" , 0x01AB46 },
+ { "Asia/Dili" , 0x01ABEC },
+ { "Asia/Dubai" , 0x01AC76 },
+ { "Asia/Dushanbe" , 0x01ACCB },
+ { "Asia/Gaza" , 0x01ADCE },
+ { "Asia/Harbin" , 0x01B121 },
+ { "Asia/Hebron" , 0x01B208 },
+ { "Asia/Ho_Chi_Minh" , 0x01B564 },
+ { "Asia/Hong_Kong" , 0x01B5DC },
+ { "Asia/Hovd" , 0x01B79E },
+ { "Asia/Irkutsk" , 0x01B916 },
+ { "Asia/Istanbul" , 0x01BAFC },
+ { "Asia/Jakarta" , 0x01BEE9 },
+ { "Asia/Jayapura" , 0x01BF93 },
+ { "Asia/Jerusalem" , 0x01C02F },
+ { "Asia/Kabul" , 0x01C35E },
+ { "Asia/Kamchatka" , 0x01C3AF },
+ { "Asia/Karachi" , 0x01C58B },
+ { "Asia/Kashgar" , 0x01C640 },
+ { "Asia/Kathmandu" , 0x01C711 },
+ { "Asia/Katmandu" , 0x01C777 },
+ { "Asia/Khandyga" , 0x01C7DD },
+ { "Asia/Kolkata" , 0x01CA02 },
+ { "Asia/Krasnoyarsk" , 0x01CA7B },
+ { "Asia/Kuala_Lumpur" , 0x01CC63 },
+ { "Asia/Kuching" , 0x01CD20 },
+ { "Asia/Kuwait" , 0x01CE0E },
+ { "Asia/Macao" , 0x01CE63 },
+ { "Asia/Macau" , 0x01CF9E },
+ { "Asia/Magadan" , 0x01D0D9 },
+ { "Asia/Makassar" , 0x01D2BB },
+ { "Asia/Manila" , 0x01D380 },
+ { "Asia/Muscat" , 0x01D405 },
+ { "Asia/Nicosia" , 0x01D45A },
+ { "Asia/Novokuznetsk" , 0x01D742 },
+ { "Asia/Novosibirsk" , 0x01D944 },
+ { "Asia/Omsk" , 0x01DB2F },
+ { "Asia/Oral" , 0x01DD16 },
+ { "Asia/Phnom_Penh" , 0x01DEE6 },
+ { "Asia/Pontianak" , 0x01DF5E },
+ { "Asia/Pyongyang" , 0x01E020 },
+ { "Asia/Qatar" , 0x01E08D },
+ { "Asia/Qyzylorda" , 0x01E0F3 },
+ { "Asia/Rangoon" , 0x01E2C9 },
+ { "Asia/Riyadh" , 0x01E341 },
+ { "Asia/Saigon" , 0x01E396 },
+ { "Asia/Sakhalin" , 0x01E40E },
+ { "Asia/Samarkand" , 0x01E605 },
+ { "Asia/Seoul" , 0x01E73B },
+ { "Asia/Shanghai" , 0x01E7DF },
+ { "Asia/Singapore" , 0x01E8BF },
+ { "Asia/Taipei" , 0x01E976 },
+ { "Asia/Tashkent" , 0x01EA8E },
+ { "Asia/Tbilisi" , 0x01EBBF },
+ { "Asia/Tehran" , 0x01ED79 },
+ { "Asia/Tel_Aviv" , 0x01EFE7 },
+ { "Asia/Thimbu" , 0x01F316 },
+ { "Asia/Thimphu" , 0x01F37C },
+ { "Asia/Tokyo" , 0x01F3E2 },
+ { "Asia/Ujung_Pandang" , 0x01F46B },
+ { "Asia/Ulaanbaatar" , 0x01F4E8 },
+ { "Asia/Ulan_Bator" , 0x01F643 },
+ { "Asia/Urumqi" , 0x01F790 },
+ { "Asia/Ust-Nera" , 0x01F857 },
+ { "Asia/Vientiane" , 0x01FA5C },
+ { "Asia/Vladivostok" , 0x01FAD4 },
+ { "Asia/Yakutsk" , 0x01FCC0 },
+ { "Asia/Yekaterinburg" , 0x01FEA5 },
+ { "Asia/Yerevan" , 0x0200B0 },
+ { "Atlantic/Azores" , 0x0202B0 },
+ { "Atlantic/Bermuda" , 0x0207B3 },
+ { "Atlantic/Canary" , 0x020A94 },
+ { "Atlantic/Cape_Verde" , 0x020D6A },
+ { "Atlantic/Faeroe" , 0x020DE3 },
+ { "Atlantic/Faroe" , 0x021087 },
+ { "Atlantic/Jan_Mayen" , 0x02132B },
+ { "Atlantic/Madeira" , 0x02165D },
+ { "Atlantic/Reykjavik" , 0x021B66 },
+ { "Atlantic/South_Georgia" , 0x021D1F },
+ { "Atlantic/St_Helena" , 0x021F31 },
+ { "Atlantic/Stanley" , 0x021D63 },
+ { "Australia/ACT" , 0x021F86 },
+ { "Australia/Adelaide" , 0x0222A3 },
+ { "Australia/Brisbane" , 0x0225CF },
+ { "Australia/Broken_Hill" , 0x022696 },
+ { "Australia/Canberra" , 0x0229D4 },
+ { "Australia/Currie" , 0x022CF1 },
+ { "Australia/Darwin" , 0x023024 },
+ { "Australia/Eucla" , 0x0230AA },
+ { "Australia/Hobart" , 0x02317F },
+ { "Australia/LHI" , 0x0234DD },
+ { "Australia/Lindeman" , 0x023778 },
+ { "Australia/Lord_Howe" , 0x023859 },
+ { "Australia/Melbourne" , 0x023B04 },
+ { "Australia/North" , 0x023E29 },
+ { "Australia/NSW" , 0x023E9D },
+ { "Australia/Perth" , 0x0241BA },
+ { "Australia/Queensland" , 0x024292 },
+ { "Australia/South" , 0x02433E },
+ { "Australia/Sydney" , 0x02465B },
+ { "Australia/Tasmania" , 0x024998 },
+ { "Australia/Victoria" , 0x024CDD },
+ { "Australia/West" , 0x024FFA },
+ { "Australia/Yancowinna" , 0x0250B0 },
+ { "Brazil/Acre" , 0x0253D2 },
+ { "Brazil/DeNoronha" , 0x0254D6 },
+ { "Brazil/East" , 0x0255F6 },
+ { "Brazil/West" , 0x0258D3 },
+ { "Canada/Atlantic" , 0x0259CB },
+ { "Canada/Central" , 0x025EB3 },
+ { "Canada/East-Saskatchewan" , 0x0267BD },
+ { "Canada/Eastern" , 0x0262CD },
+ { "Canada/Mountain" , 0x026946 },
+ { "Canada/Newfoundland" , 0x026CBC },
+ { "Canada/Pacific" , 0x0271E7 },
+ { "Canada/Saskatchewan" , 0x027600 },
+ { "Canada/Yukon" , 0x027789 },
+ { "CET" , 0x027A8C },
+ { "Chile/Continental" , 0x027D95 },
+ { "Chile/EasterIsland" , 0x028130 },
+ { "CST6CDT" , 0x028472 },
+ { "Cuba" , 0x0287C3 },
+ { "EET" , 0x028B36 },
+ { "Egypt" , 0x028DE9 },
+ { "Eire" , 0x0290AC },
+ { "EST" , 0x0295BD },
+ { "EST5EDT" , 0x029601 },
+ { "Etc/GMT" , 0x029952 },
+ { "Etc/GMT+0" , 0x029A1E },
+ { "Etc/GMT+1" , 0x029AA8 },
+ { "Etc/GMT+10" , 0x029B35 },
+ { "Etc/GMT+11" , 0x029BC3 },
+ { "Etc/GMT+12" , 0x029C51 },
+ { "Etc/GMT+2" , 0x029D6C },
+ { "Etc/GMT+3" , 0x029DF8 },
+ { "Etc/GMT+4" , 0x029E84 },
+ { "Etc/GMT+5" , 0x029F10 },
+ { "Etc/GMT+6" , 0x029F9C },
+ { "Etc/GMT+7" , 0x02A028 },
+ { "Etc/GMT+8" , 0x02A0B4 },
+ { "Etc/GMT+9" , 0x02A140 },
+ { "Etc/GMT-0" , 0x0299DA },
+ { "Etc/GMT-1" , 0x029A62 },
+ { "Etc/GMT-10" , 0x029AEE },
+ { "Etc/GMT-11" , 0x029B7C },
+ { "Etc/GMT-12" , 0x029C0A },
+ { "Etc/GMT-13" , 0x029C98 },
+ { "Etc/GMT-14" , 0x029CDF },
+ { "Etc/GMT-2" , 0x029D26 },
+ { "Etc/GMT-3" , 0x029DB2 },
+ { "Etc/GMT-4" , 0x029E3E },
+ { "Etc/GMT-5" , 0x029ECA },
+ { "Etc/GMT-6" , 0x029F56 },
+ { "Etc/GMT-7" , 0x029FE2 },
+ { "Etc/GMT-8" , 0x02A06E },
+ { "Etc/GMT-9" , 0x02A0FA },
+ { "Etc/GMT0" , 0x029996 },
+ { "Etc/Greenwich" , 0x02A186 },
+ { "Etc/UCT" , 0x02A1CA },
+ { "Etc/Universal" , 0x02A20E },
+ { "Etc/UTC" , 0x02A252 },
+ { "Etc/Zulu" , 0x02A296 },
+ { "Europe/Amsterdam" , 0x02A2DA },
+ { "Europe/Andorra" , 0x02A718 },
+ { "Europe/Athens" , 0x02A994 },
+ { "Europe/Belfast" , 0x02ACD7 },
+ { "Europe/Belgrade" , 0x02B20E },
+ { "Europe/Berlin" , 0x02B4D7 },
+ { "Europe/Bratislava" , 0x02B83B },
+ { "Europe/Brussels" , 0x02BB6D },
+ { "Europe/Bucharest" , 0x02BFA4 },
+ { "Europe/Budapest" , 0x02C2CE },
+ { "Europe/Busingen" , 0x02C641 },
+ { "Europe/Chisinau" , 0x02C8F8 },
+ { "Europe/Copenhagen" , 0x02CC86 },
+ { "Europe/Dublin" , 0x02CF90 },
+ { "Europe/Gibraltar" , 0x02D4A1 },
+ { "Europe/Guernsey" , 0x02D8F8 },
+ { "Europe/Helsinki" , 0x02DE2F },
+ { "Europe/Isle_of_Man" , 0x02E0E5 },
+ { "Europe/Istanbul" , 0x02E61C },
+ { "Europe/Jersey" , 0x02EA09 },
+ { "Europe/Kaliningrad" , 0x02EF40 },
+ { "Europe/Kiev" , 0x02F1A6 },
+ { "Europe/Lisbon" , 0x02F4BD },
+ { "Europe/Ljubljana" , 0x02F9C1 },
+ { "Europe/London" , 0x02FC8A },
+ { "Europe/Luxembourg" , 0x0301C1 },
+ { "Europe/Madrid" , 0x030617 },
+ { "Europe/Malta" , 0x0309DD },
+ { "Europe/Mariehamn" , 0x030D96 },
+ { "Europe/Minsk" , 0x03104C },
+ { "Europe/Monaco" , 0x03125A },
+ { "Europe/Moscow" , 0x031695 },
+ { "Europe/Nicosia" , 0x0318E6 },
+ { "Europe/Oslo" , 0x031BCE },
+ { "Europe/Paris" , 0x031F00 },
+ { "Europe/Podgorica" , 0x032346 },
+ { "Europe/Prague" , 0x03260F },
+ { "Europe/Riga" , 0x032941 },
+ { "Europe/Rome" , 0x032C86 },
+ { "Europe/Samara" , 0x033049 },
+ { "Europe/San_Marino" , 0x03327C },
+ { "Europe/Sarajevo" , 0x03363F },
+ { "Europe/Simferopol" , 0x033908 },
+ { "Europe/Skopje" , 0x033C33 },
+ { "Europe/Sofia" , 0x033EFC },
+ { "Europe/Stockholm" , 0x034204 },
+ { "Europe/Tallinn" , 0x0344B3 },
+ { "Europe/Tirane" , 0x0347ED },
+ { "Europe/Tiraspol" , 0x034AF3 },
+ { "Europe/Uzhgorod" , 0x034E81 },
+ { "Europe/Vaduz" , 0x035198 },
+ { "Europe/Vatican" , 0x035447 },
+ { "Europe/Vienna" , 0x03580A },
+ { "Europe/Vilnius" , 0x035B37 },
+ { "Europe/Volgograd" , 0x035E76 },
+ { "Europe/Warsaw" , 0x036076 },
+ { "Europe/Zagreb" , 0x036457 },
+ { "Europe/Zaporozhye" , 0x036720 },
+ { "Europe/Zurich" , 0x036A61 },
+ { "Factory" , 0x036D10 },
+ { "GB" , 0x036D81 },
+ { "GB-Eire" , 0x0372B8 },
+ { "GMT" , 0x0377EF },
+ { "GMT+0" , 0x0378BB },
+ { "GMT-0" , 0x037877 },
+ { "GMT0" , 0x037833 },
+ { "Greenwich" , 0x0378FF },
+ { "Hongkong" , 0x037943 },
+ { "HST" , 0x037B05 },
+ { "Iceland" , 0x037B49 },
+ { "Indian/Antananarivo" , 0x037D02 },
+ { "Indian/Chagos" , 0x037D76 },
+ { "Indian/Christmas" , 0x037DD8 },
+ { "Indian/Cocos" , 0x037E1C },
+ { "Indian/Comoro" , 0x037E60 },
+ { "Indian/Kerguelen" , 0x037EB5 },
+ { "Indian/Mahe" , 0x037F0A },
+ { "Indian/Maldives" , 0x037F5F },
+ { "Indian/Mauritius" , 0x037FB4 },
+ { "Indian/Mayotte" , 0x03802A },
+ { "Indian/Reunion" , 0x03807F },
+ { "Iran" , 0x0380D4 },
+ { "Israel" , 0x038342 },
+ { "Jamaica" , 0x038671 },
+ { "Japan" , 0x038736 },
+ { "Kwajalein" , 0x0387BF },
+ { "Libya" , 0x038822 },
+ { "MET" , 0x03892B },
+ { "Mexico/BajaNorte" , 0x038C34 },
+ { "Mexico/BajaSur" , 0x038F9D },
+ { "Mexico/General" , 0x0391E2 },
+ { "MST" , 0x039440 },
+ { "MST7MDT" , 0x039484 },
+ { "Navajo" , 0x0397D5 },
+ { "NZ" , 0x039B4E },
+ { "NZ-CHAT" , 0x039ECC },
+ { "Pacific/Apia" , 0x03A1B4 },
+ { "Pacific/Auckland" , 0x03A350 },
+ { "Pacific/Chatham" , 0x03A6DC },
+ { "Pacific/Chuuk" , 0x03A9D3 },
+ { "Pacific/Easter" , 0x03AA2C },
+ { "Pacific/Efate" , 0x03AD8A },
+ { "Pacific/Enderbury" , 0x03AE50 },
+ { "Pacific/Fakaofo" , 0x03AEBE },
+ { "Pacific/Fiji" , 0x03AF0F },
+ { "Pacific/Funafuti" , 0x03B0A2 },
+ { "Pacific/Galapagos" , 0x03B0E6 },
+ { "Pacific/Gambier" , 0x03B15E },
+ { "Pacific/Guadalcanal" , 0x03B1C3 },
+ { "Pacific/Guam" , 0x03B218 },
+ { "Pacific/Honolulu" , 0x03B26E },
+ { "Pacific/Johnston" , 0x03B2E5 },
+ { "Pacific/Kiritimati" , 0x03B364 },
+ { "Pacific/Kosrae" , 0x03B3CF },
+ { "Pacific/Kwajalein" , 0x03B42C },
+ { "Pacific/Majuro" , 0x03B498 },
+ { "Pacific/Marquesas" , 0x03B4F7 },
+ { "Pacific/Midway" , 0x03B55E },
+ { "Pacific/Nauru" , 0x03B5E8 },
+ { "Pacific/Niue" , 0x03B660 },
+ { "Pacific/Norfolk" , 0x03B6BE },
+ { "Pacific/Noumea" , 0x03B713 },
+ { "Pacific/Pago_Pago" , 0x03B7A3 },
+ { "Pacific/Palau" , 0x03B82C },
+ { "Pacific/Pitcairn" , 0x03B870 },
+ { "Pacific/Pohnpei" , 0x03B8C5 },
+ { "Pacific/Ponape" , 0x03B91A },
+ { "Pacific/Port_Moresby" , 0x03B95F },
+ { "Pacific/Rarotonga" , 0x03B9A3 },
+ { "Pacific/Saipan" , 0x03BA7F },
+ { "Pacific/Samoa" , 0x03BAE2 },
+ { "Pacific/Tahiti" , 0x03BB6B },
+ { "Pacific/Tarawa" , 0x03BBD0 },
+ { "Pacific/Tongatapu" , 0x03BC24 },
+ { "Pacific/Truk" , 0x03BCB0 },
+ { "Pacific/Wake" , 0x03BCF5 },
+ { "Pacific/Wallis" , 0x03BD45 },
+ { "Pacific/Yap" , 0x03BD89 },
+ { "Poland" , 0x03BDCE },
+ { "Portugal" , 0x03C1AF },
+ { "PRC" , 0x03C6AB },
+ { "PST8PDT" , 0x03C75C },
+ { "ROC" , 0x03CAAD },
+ { "ROK" , 0x03CBC5 },
+ { "Singapore" , 0x03CC69 },
+ { "Turkey" , 0x03CD20 },
+ { "UCT" , 0x03D10D },
+ { "Universal" , 0x03D151 },
+ { "US/Alaska" , 0x03D195 },
+ { "US/Aleutian" , 0x03D4FE },
+ { "US/Arizona" , 0x03D864 },
+ { "US/Central" , 0x03D8F2 },
+ { "US/East-Indiana" , 0x03E2FC },
+ { "US/Eastern" , 0x03DDFD },
+ { "US/Hawaii" , 0x03E566 },
+ { "US/Indiana-Starke" , 0x03E5D7 },
+ { "US/Michigan" , 0x03E948 },
+ { "US/Mountain" , 0x03EC7F },
+ { "US/Pacific" , 0x03EFF8 },
+ { "US/Pacific-New" , 0x03F3FD },
+ { "US/Samoa" , 0x03F802 },
+ { "UTC" , 0x03F88B },
+ { "W-SU" , 0x03FB82 },
+ { "WET" , 0x03F8CF },
+ { "Zulu" , 0x03FDBC },
};
/* This is a generated file, do not modify */
-const unsigned char timelib_timezone_db_data_builtin[261404] = {
+const unsigned char timelib_timezone_db_data_builtin[261632] = {
/* Africa/Abidjan */
@@ -3490,7 +3490,7 @@ const unsigned char timelib_timezone_db_data_builtin[261404] = {
0x33, 0x47, 0x2D, 0xD0, 0x34, 0x40, 0x59, 0x50, 0x35, 0x1D, 0xD5, 0x50, 0x36, 0x32, 0xB0, 0x50,
0x36, 0xFD, 0xB7, 0x50, 0x38, 0x1B, 0xCC, 0xD0, 0x38, 0xE6, 0xD3, 0xD0, 0x39, 0xFB, 0xAE, 0xD0,
0x3A, 0xC6, 0xB5, 0xD0, 0x3B, 0xDB, 0x90, 0xD0, 0x3C, 0xAF, 0xD2, 0x50, 0x3D, 0xBB, 0x72, 0xD0,
-0x3E, 0x8F, 0xB4, 0x50, 0x3F, 0x9B, 0x54, 0xD0, 0x40, 0x6F, 0x96, 0x50, 0x45, 0x44, 0x35, 0x50,
+0x3E, 0x8F, 0xB4, 0x50, 0x3F, 0x9B, 0x54, 0xD0, 0x40, 0x66, 0x5B, 0xD0, 0x45, 0x44, 0x35, 0x50,
0x45, 0xF3, 0x8C, 0xD0, 0x47, 0x24, 0x17, 0x50, 0x47, 0xDC, 0xA9, 0x50, 0x49, 0x03, 0xF9, 0x50,
0x49, 0xB3, 0x50, 0xD0, 0x4A, 0xE3, 0xDB, 0x50, 0x4B, 0x9C, 0x6D, 0x50, 0x4C, 0xCC, 0xF7, 0xD0,
0x4D, 0x85, 0x89, 0xD0, 0x4E, 0xBF, 0x4E, 0xD0, 0x4F, 0x77, 0xE0, 0xD0, 0x50, 0x95, 0xF6, 0x50,
@@ -7552,8 +7552,8 @@ const unsigned char timelib_timezone_db_data_builtin[261404] = {
/* Asia/Amman */
0x50, 0x48, 0x50, 0x31, 0x01, 0x4A, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0xB6, 0xA3, 0xD6, 0xD0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, 0xB6, 0xA3, 0xD6, 0xD0,
0x06, 0x72, 0x79, 0xE0, 0x07, 0x0C, 0xAB, 0x50, 0x08, 0x24, 0x37, 0x60, 0x08, 0xED, 0xDE, 0xD0,
0x0A, 0x05, 0x6A, 0xE0, 0x0A, 0xCF, 0x12, 0x50, 0x0B, 0xE7, 0xEF, 0xE0, 0x0C, 0xDA, 0x75, 0xD0,
0x0D, 0xC9, 0x23, 0x60, 0x0E, 0x92, 0xCA, 0xD0, 0x0F, 0xA9, 0x05, 0x60, 0x10, 0x72, 0xAC, 0xD0,
@@ -7570,17 +7570,31 @@ const unsigned char timelib_timezone_db_data_builtin[261404] = {
0x42, 0x4C, 0x72, 0xE0, 0x43, 0x3C, 0x63, 0xE0, 0x44, 0x2C, 0x54, 0xE0, 0x45, 0x41, 0x2F, 0xE0,
0x46, 0x0C, 0x36, 0xE0, 0x47, 0x21, 0x11, 0xE0, 0x47, 0xEC, 0x18, 0xE0, 0x49, 0x0A, 0x2E, 0x60,
0x49, 0xCB, 0xFA, 0xE0, 0x4A, 0xEA, 0x10, 0x60, 0x4B, 0xAB, 0xDC, 0xE0, 0x4C, 0xC9, 0xF2, 0x60,
-0x4D, 0x94, 0xF9, 0x60, 0x4E, 0xA9, 0xD4, 0x60, 0x4F, 0x74, 0xDB, 0x60, 0x50, 0x89, 0xB6, 0x60,
+0x4D, 0x94, 0xF9, 0x60, 0x4E, 0xA9, 0xD4, 0x60, 0x4F, 0x74, 0xDB, 0x60, 0x52, 0xB3, 0x5E, 0x50,
+0x53, 0x34, 0x9F, 0x60, 0x54, 0x52, 0xB4, 0xE0, 0x55, 0x14, 0x81, 0x60, 0x56, 0x32, 0x96, 0xE0,
+0x56, 0xFD, 0x9D, 0xE0, 0x58, 0x12, 0x78, 0xE0, 0x58, 0xDD, 0x7F, 0xE0, 0x59, 0xF2, 0x5A, 0xE0,
+0x5A, 0xBD, 0x61, 0xE0, 0x5B, 0xD2, 0x3C, 0xE0, 0x5C, 0x9D, 0x43, 0xE0, 0x5D, 0xB2, 0x1E, 0xE0,
+0x5E, 0x7D, 0x25, 0xE0, 0x5F, 0x9B, 0x3B, 0x60, 0x60, 0x5D, 0x07, 0xE0, 0x61, 0x7B, 0x1D, 0x60,
+0x62, 0x46, 0x24, 0x60, 0x63, 0x5A, 0xFF, 0x60, 0x64, 0x26, 0x06, 0x60, 0x65, 0x3A, 0xE1, 0x60,
+0x66, 0x05, 0xE8, 0x60, 0x67, 0x1A, 0xC3, 0x60, 0x67, 0xE5, 0xCA, 0x60, 0x69, 0x03, 0xDF, 0xE0,
+0x69, 0xC5, 0xAC, 0x60, 0x6A, 0xE3, 0xC1, 0xE0, 0x6B, 0xA5, 0x8E, 0x60, 0x6C, 0xC3, 0xA3, 0xE0,
+0x6D, 0x8E, 0xAA, 0xE0, 0x6E, 0xA3, 0x85, 0xE0, 0x6F, 0x6E, 0x8C, 0xE0, 0x70, 0x83, 0x67, 0xE0,
+0x71, 0x4E, 0x6E, 0xE0, 0x72, 0x63, 0x49, 0xE0, 0x73, 0x2E, 0x50, 0xE0, 0x74, 0x4C, 0x66, 0x60,
+0x75, 0x0E, 0x32, 0xE0, 0x76, 0x2C, 0x48, 0x60, 0x76, 0xF7, 0x4F, 0x60, 0x78, 0x0C, 0x2A, 0x60,
+0x78, 0xD7, 0x31, 0x60, 0x79, 0xEC, 0x0C, 0x60, 0x7A, 0xB7, 0x13, 0x60, 0x7B, 0xCB, 0xEE, 0x60,
+0x7C, 0x96, 0xF5, 0x60, 0x7D, 0xB5, 0x0A, 0xE0, 0x7E, 0x76, 0xD7, 0x60, 0x7F, 0x94, 0xEC, 0xE0,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01,
0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
-0x03, 0x01, 0x03, 0x01, 0x05, 0x00, 0x00, 0x21, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01,
+0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
+0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
+0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01,
+0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x00, 0x21, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x01,
0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A,
-0x30, 0x01, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53,
-0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x14, 0xB8, 0x01, 0x49, 0x7C, 0xF5, 0x00, 0x00,
-0x00, 0x00,
+0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x14, 0xB8, 0x01, 0x49,
+0x7C, 0xF5, 0x00, 0x00, 0x00, 0x00,
/* Asia/Anadyr */
0x50, 0x48, 0x50, 0x31, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -11908,7 +11922,7 @@ const unsigned char timelib_timezone_db_data_builtin[261404] = {
0x33, 0x47, 0x2D, 0xD0, 0x34, 0x40, 0x59, 0x50, 0x35, 0x1D, 0xD5, 0x50, 0x36, 0x32, 0xB0, 0x50,
0x36, 0xFD, 0xB7, 0x50, 0x38, 0x1B, 0xCC, 0xD0, 0x38, 0xE6, 0xD3, 0xD0, 0x39, 0xFB, 0xAE, 0xD0,
0x3A, 0xC6, 0xB5, 0xD0, 0x3B, 0xDB, 0x90, 0xD0, 0x3C, 0xAF, 0xD2, 0x50, 0x3D, 0xBB, 0x72, 0xD0,
-0x3E, 0x8F, 0xB4, 0x50, 0x3F, 0x9B, 0x54, 0xD0, 0x40, 0x6F, 0x96, 0x50, 0x45, 0x44, 0x35, 0x50,
+0x3E, 0x8F, 0xB4, 0x50, 0x3F, 0x9B, 0x54, 0xD0, 0x40, 0x66, 0x5B, 0xD0, 0x45, 0x44, 0x35, 0x50,
0x45, 0xF3, 0x8C, 0xD0, 0x47, 0x24, 0x17, 0x50, 0x47, 0xDC, 0xA9, 0x50, 0x49, 0x03, 0xF9, 0x50,
0x49, 0xB3, 0x50, 0xD0, 0x4A, 0xE3, 0xDB, 0x50, 0x4B, 0x9C, 0x6D, 0x50, 0x4C, 0xCC, 0xF7, 0xD0,
0x4D, 0x85, 0x89, 0xD0, 0x4E, 0xBF, 0x4E, 0xD0, 0x4F, 0x77, 0xE0, 0xD0, 0x50, 0x95, 0xF6, 0x50,
@@ -18402,4 +18416,4 @@ const unsigned char timelib_timezone_db_data_builtin[261404] = {
0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x00, 0x00, 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80,
0x00, 0x00, 0x00, 0x00, };
-const timelib_tzdb timezonedb_builtin = { "2013.8", 579, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2013.9", 579, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff --git a/ext/date/lib/unixtime2tm.c b/ext/date/lib/unixtime2tm.c
index c177feebb..194b3b211 100644
--- a/ext/date/lib/unixtime2tm.c
+++ b/ext/date/lib/unixtime2tm.c
@@ -137,19 +137,16 @@ void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts)
void timelib_update_from_sse(timelib_time *tm)
{
timelib_sll sse;
+ int z = tm->z;
+ signed int dst = tm->dst;
sse = tm->sse;
switch (tm->zone_type) {
case TIMELIB_ZONETYPE_ABBR:
case TIMELIB_ZONETYPE_OFFSET: {
- int z = tm->z;
- signed int dst = tm->dst;
-
timelib_unixtime2gmt(tm, tm->sse - (tm->z * 60) + (tm->dst * 3600));
- tm->z = z;
- tm->dst = dst;
goto cleanup;
}
@@ -171,6 +168,8 @@ cleanup:
tm->sse = sse;
tm->is_localtime = 1;
tm->have_zone = 1;
+ tm->z = z;
+ tm->dst = dst;
}
void timelib_unixtime2local(timelib_time *tm, timelib_sll ts)