From fd54c471a7e352350e9bc89c5369079614ec37ba Mon Sep 17 00:00:00 2001 From: David Hull Date: Thu, 9 Jan 2014 15:07:01 -0800 Subject: [PATCH 1/5] Correct tz_database documentation, code expects 'last' not -1. --- include/tz_database.hrl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/tz_database.hrl b/include/tz_database.hrl index 48a2a33..c4a0c6d 100644 --- a/include/tz_database.hrl +++ b/include/tz_database.hrl @@ -23,7 +23,7 @@ % StdMin = Integer(), GMT offset in minutes. W/o daylight savings % DstMin = Integer(), daylight saving. Adjustment for GMT offset, when daylight saving is on % DstStartDay = {NthWeekday, Weekday, Month}, daylight saving transition rule. Can be undef if no daylight saving rule specified -% NthWeekday = Integer(), 1(first week),2(second week),3(...),4(...),5(...),-1(last week) +% NthWeekday = Integer() | 'last', 1(first week),2(second week),3(...),4(...),5(...),'last'(last week) % Weekday = atom(), sun,mon,tue,wed,thu,fri,sat % Month = atom(), jan,deb,mar,apr,may,jun,jul,aug,sep,oct,mov,dec % DstStartTime = {Hour, Min} - time of daylight saving transition From 4ad81b03fd72d0a846046c7888d14db7c602688d Mon Sep 17 00:00:00 2001 From: David Hull Date: Thu, 9 Jan 2014 16:11:18 -0800 Subject: [PATCH 2/5] Added Makefile rule to build tz_index.hrl. --- Makefile | 9 ++++++++- src/ibuild.erl | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) mode change 100644 => 100755 src/ibuild.erl diff --git a/Makefile b/Makefile index 04d1de1..1022b4b 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,9 @@ -all: +all: include/tz_index.hrl ./rebar compile + +check: + ./rebar eunit + +include/tz_index.hrl: src/ibuild.erl include/tz_database.hrl + cd include && ln -s ../src/ibuild.erl && escript ibuild.erl; EV=$$?; rm ibuild.erl; exit $$EV + diff --git a/src/ibuild.erl b/src/ibuild.erl old mode 100644 new mode 100755 index ab1f1fa..3334c1d --- a/src/ibuild.erl +++ b/src/ibuild.erl @@ -1,6 +1,6 @@ -module(ibuild). --export([build_index/0]). +-export([build_index/0, main/1]). -include("tz_database.hrl"). @@ -22,3 +22,7 @@ build_index() -> I = lists:foldl(F, dict:new(), ?tz_database), {ok, File} = file:open("tz_index.hrl", [write]), io:fwrite(File, "-define(tz_index, ~p).", [I]). + +%% So this can be run from escript: +main(_Args) -> + build_index(). From 6d4985d5f2eee57b67b9c218e56d90c1cff78b43 Mon Sep 17 00:00:00 2001 From: David Hull Date: Thu, 9 Jan 2014 16:46:15 -0800 Subject: [PATCH 3/5] Prefer underscores in timezone names, but accept spaces. --- include/tz_database.hrl | 96 ++++++++++++++++++++--------------------- src/localtime.erl | 35 ++++++++++++++- 2 files changed, 81 insertions(+), 50 deletions(-) diff --git a/include/tz_database.hrl b/include/tz_database.hrl index c4a0c6d..2b56c99 100644 --- a/include/tz_database.hrl +++ b/include/tz_database.hrl @@ -37,7 +37,7 @@ [ {"Africa/Abidjan",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Accra",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, - {"Africa/Addis Ababa",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, + {"Africa/Addis_Ababa",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Algiers",{"CET","CET"},undef,60,0,undef,{0,0},undef,{0,0}}, {"Africa/Asmera",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Bamako",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, @@ -52,10 +52,10 @@ {"Africa/Ceuta",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Africa/Conakry",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Dakar",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, - {"Africa/Dar es Salaam",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, + {"Africa/Dar_es_Salaam",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Djibouti",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Douala",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, - {"Africa/El Aaiun",{"WET","WET"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Africa/El_Aaiun",{"WET","WET"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Freetown",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Gaborone",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Harare",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, @@ -82,7 +82,7 @@ {"Africa/Nouakchott",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Ouagadougou",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Porto-Novo",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, - {"Africa/Sao Tome",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Africa/Sao_Tome",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Timbuktu",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Tripoli",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Tunis",{"CET","CET"},undef,60,0,undef,{0,0},undef,{0,0}}, @@ -97,11 +97,11 @@ {"America/Barbados",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Belem",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Belize",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, - {"America/Boa Vista",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Boa_Vista",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Bogota",{"COT","COT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Boise",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Buenos Aires",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, - {"America/Cambridge Bay",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Buenos_Aires",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Cambridge_Bay",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Cancun",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Caracas",{"VET","VET"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Catamarca",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, @@ -110,23 +110,23 @@ {"America/Chicago",{"CST","Central Standard Time"},{"CDT","Central Daylight Time"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Chihuahua",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Cordoba",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, - {"America/Costa Rica",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, + {"America/Costa_Rica",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Cuiaba",{"AMT","AMT"},{"AMST","AMST"},-240,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Curacao",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Danmarkshavn",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"America/Dawson",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Dawson Creek",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, + {"America/Dawson_Creek",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, {"America/Denver",{"MST","Mountain Standard Time"},{"MDT","Mountain Daylight Time"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Detroit",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Dominica",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Edmonton",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Eirunepe",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, - {"America/El Salvador",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, + {"America/El_Salvador",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Fortaleza",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, - {"America/Glace Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Glace_Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Godthab",{"WGT","WGT"},{"WGST","WGST"},-180,60,{last,sat,mar},{22,0},{last,sat,oct},{23,0}}, - {"America/Goose Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{1,sun,apr},{0,1},{last,sun,oct},{0,1}}, - {"America/Grand Turk",{"EST","EST"},{"EDT","EDT"},-300,60,{1,sun,apr},{0,0},{last,sun,oct},{0,0}}, + {"America/Goose_Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{1,sun,apr},{0,1},{last,sun,oct},{0,1}}, + {"America/Grand_Turk",{"EST","EST"},{"EDT","EDT"},-300,60,{1,sun,apr},{0,0},{last,sun,oct},{0,0}}, {"America/Grenada",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Guadeloupe",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Guatemala",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, @@ -147,9 +147,9 @@ {"America/Juneau",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Kentucky/Louisville",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Kentucky/Monticello",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/La Paz",{"BOT","BOT"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/La_Paz",{"BOT","BOT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Lima",{"PET","PET"},undef,-300,0,undef,{0,0},undef,{0,0}}, - {"America/Los Angeles",{"PST","Pacific Standard Time"},{"PDT","Pacific Daylight Time"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Los_Angeles",{"PST","Pacific Standard Time"},{"PDT","Pacific Daylight Time"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Louisville",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Maceio",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Managua",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, @@ -159,46 +159,46 @@ {"America/Mendoza",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Menominee",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Merida",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, - {"America/Mexico City",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, + {"America/Mexico_City",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Miquelon",{"PMST","PMST"},{"PMDT","PMDT"},-180,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Monterrey",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Montevideo",{"UYT","UYT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Montreal",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Montserrat",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Nassau",{"EST","EST"},{"EDT","EDT"},-300,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, - {"America/New York",{"EST","Eastern Standard Time"},{"EDT","Eastern Daylight Time"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/New_York",{"EST","Eastern Standard Time"},{"EDT","Eastern Daylight Time"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Nipigon",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Nome",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Noronha",{"FNT","FNT"},undef,-120,0,undef,{0,0},undef,{0,0}}, - {"America/North Dakota/Center",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/North_Dakota/Center",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Panama",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Pangnirtung",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Paramaribo",{"SRT","SRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Phoenix",{"MST","Mountain Standard Time"},undef,-420,0,undef,{0,0},undef,{0,0}}, {"America/Port-au-Prince",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, - {"America/Port of Spain",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Porto Velho",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Puerto Rico",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Rainy River",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Rankin Inlet",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Port_of_Spain",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Porto_Velho",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Puerto_Rico",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Rainy_River",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Rankin_Inlet",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Recife",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Regina",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, - {"America/Rio Branco",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, + {"America/Rio_Branco",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Rosario",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Santiago",{"CLT","CLT"},{"CLST","CLST"},-240,60,{2,sun,oct},{0,0},{2,sun,mar},{0,0}}, - {"America/Santo Domingo",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Sao Paulo",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, + {"America/Santo_Domingo",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Sao_Paulo",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Scoresbysund",{"EGT","EGT"},{"EGST","EGST"},-60,60,{last,sun,mar},{0,0},{last,sun,oct},{1,0}}, {"America/Shiprock",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/St Johns",{"NST","NST"},{"NDT","NDT"},-210,60,{1,sun,apr},{0,1},{last,sun,oct},{0,1}}, - {"America/St Kitts",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/St Lucia",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/St Thomas",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/St Vincent",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Swift Current",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, + {"America/St_Johns",{"NST","NST"},{"NDT","NDT"},-210,60,{1,sun,apr},{0,1},{last,sun,oct},{0,1}}, + {"America/St_Kitts",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/St_Lucia",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/St_Thomas",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/St_Vincent",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Swift_Current",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Tegucigalpa",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Thule",{"AST","AST"},undef,-240,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, - {"America/Thunder Bay",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Thunder_Bay",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Tijuana",{"PST","PST"},{"PDT","PDT"},-480,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Tortola",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Vancouver",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, @@ -212,7 +212,7 @@ {"Antarctica/Mawson",{"MAWT","MAWT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Antarctica/McMurdo",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, {"Antarctica/Palmer",{"CLT","CLT"},{"CLST","CLST"},-240,60,{2,sun,oct},{0,0},{2,sun,mar},{0,0}}, - {"Antarctica/South Pole",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, + {"Antarctica/South_Pole",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, {"Antarctica/Syowa",{"SYOT","SYOT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Antarctica/Vostok",{"VOST","VOST"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Arctic/Longyearbyen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, @@ -241,7 +241,7 @@ {"Asia/Dushanbe",{"TJT","TJT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Gaza",{"EET","EET"},{"EEST","EEST"},120,60,{3,fri,apr},{0,0},{3,fri,oct},{0,0}}, {"Asia/Harbin",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, - {"Asia/Hong Kong",{"HKT","HKT"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Hong_Kong",{"HKT","HKT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Hovd",{"HOVT","HOVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Irkutsk",{"IRKT","IRKT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Istanbul",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, @@ -254,7 +254,7 @@ {"Asia/Kashgar",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Katmandu",{"NPT","NPT"},undef,345,0,undef,{0,0},undef,{0,0}}, {"Asia/Krasnoyarsk",{"KRAT","KRAT"},undef,480,0,undef,{0,0},undef,{0,0}}, - {"Asia/Kuala Lumpur",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Kuala_Lumpur",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Kuching",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Kuwait",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Macao",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, @@ -267,11 +267,11 @@ {"Asia/Novosibirsk",{"NOVT","NOVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Omsk",{"OMST","OMST"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Oral",{"WST","WST"},undef,300,0,undef,{0,0},undef,{0,0}}, - {"Asia/Phnom Penh",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, + {"Asia/Phnom_Penh",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Pontianak",{"WIT","WIT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Pyongyang",{"KST","KST"},undef,540,0,undef,{0,0},undef,{0,0}}, - {"Asia/Qyzylorda",{"KST","KST"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Qatar",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, + {"Asia/Qyzylorda",{"KST","KST"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Rangoon",{"MMT","MMT"},undef,390,0,undef,{0,0},undef,{0,0}}, {"Asia/Riyadh",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Saigon",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, @@ -286,7 +286,7 @@ {"Asia/Tehran",{"IRT","IRT"},undef,210,0,undef,{0,0},undef,{0,0}}, {"Asia/Thimphu",{"BTT","BTT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Tokyo",{"JST","JST"},undef,540,0,undef,{0,0},undef,{0,0}}, - {"Asia/Ujung Pandang",{"CIT","CIT"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Ujung_Pandang",{"CIT","CIT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Ulaanbaatar",{"ULAT","ULAT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Urumqi",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Vientiane",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, @@ -297,21 +297,21 @@ {"Atlantic/Azores",{"AZOT","AZOT"},{"AZOST","AZOST"},-60,60,{last,sun,mar},{0,0},{last,sun,oct},{1,0}}, {"Atlantic/Bermuda",{"AST","AST"},{"ADT","ADT"},-240,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"Atlantic/Canary",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, - {"Atlantic/Cape Verde",{"CVT","CVT"},undef,-60,0,undef,{0,0},undef,{0,0}}, + {"Atlantic/Cape_Verde",{"CVT","CVT"},undef,-60,0,undef,{0,0},undef,{0,0}}, {"Atlantic/Faeroe",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, - {"Atlantic/Jan Mayen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"Atlantic/Jan_Mayen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Atlantic/Madeira",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Atlantic/Reykjavik",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, - {"Atlantic/South Georgia",{"GST","GST"},undef,-120,0,undef,{0,0},undef,{0,0}}, - {"Atlantic/St Helena",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Atlantic/South_Georgia",{"GST","GST"},undef,-120,0,undef,{0,0},undef,{0,0}}, + {"Atlantic/St_Helena",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Atlantic/Stanley",{"FKT","FKT"},{"FKST","FKST"},-240,60,{1,sun,sep},{2,0},{3,sun,apr},{2,0}}, {"Australia/Adelaide",{"CST","CST"},{"CST","CST"},570,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/Brisbane",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}}, - {"Australia/Broken Hill",{"CST","CST"},{"CST","CST"},570,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, + {"Australia/Broken_Hill",{"CST","CST"},{"CST","CST"},570,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/Darwin",{"CST","CST"},undef,570,0,undef,{0,0},undef,{0,0}}, {"Australia/Hobart",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/Lindeman",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}}, - {"Australia/Lord Howe",{"LHST","LHST"},{"LHST","LHST"},630,30,{last,sun,oct},{2,0},{last,sun,mar},{2,0}}, + {"Australia/Lord_Howe",{"LHST","LHST"},{"LHST","LHST"},630,30,{last,sun,oct},{2,0},{last,sun,mar},{2,0}}, {"Australia/Melbourne",{"EST","EST"},{"EST","EST"},600,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, {"Australia/Perth",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Australia/Sydney",{"EST","EST"},{"EST","EST"},600,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, @@ -349,7 +349,7 @@ {"Europe/Riga",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Rome",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Samara",{"SAMT","SAMT"},undef,300,0,undef,{0,0},undef,{0,0}}, - {"Europe/San Marino",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"Europe/San_Marino",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Sarajevo",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Simferopol",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Skopje",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, @@ -402,11 +402,11 @@ {"Pacific/Niue",{"NUT","NUT"},undef,-660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Norfolk",{"NFT","NFT"},undef,690,0,undef,{0,0},undef,{0,0}}, {"Pacific/Noumea",{"NCT","NCT"},undef,660,0,undef,{0,0},undef,{0,0}}, - {"Pacific/Pago Pago",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}}, + {"Pacific/Pago_Pago",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Palau",{"PWT","PWT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Pacific/Pitcairn",{"PST","PST"},undef,-480,0,undef,{0,0},undef,{0,0}}, {"Pacific/Ponape",{"PONT","PONT"},undef,660,0,undef,{0,0},undef,{0,0}}, - {"Pacific/Port Moresby",{"PGT","PGT"},undef,600,0,undef,{0,0},undef,{0,0}}, + {"Pacific/Port_Moresby",{"PGT","PGT"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Rarotonga",{"CKT","CKT"},undef,-600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Saipan",{"ChST","ChST"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Tahiti",{"TAHT","TAHT"},undef,-600,0,undef,{0,0},undef,{0,0}}, diff --git a/src/localtime.erl b/src/localtime.erl index d715d0b..627e29f 100644 --- a/src/localtime.erl +++ b/src/localtime.erl @@ -220,10 +220,41 @@ fmt_shift({'-', H, M}) -> fmt_shift(Any) -> throw(Any). +tr_char(String, From, To) -> + case string:chr(String, From) of + 0 -> String; % Optimize for String does not contain From. + _ -> tr_char(String, From, To, []) + end. +tr_char([], _From, _To, Acc) -> + lists:reverse(Acc); +tr_char([H|T], From, To, Acc) -> + case H of + From -> tr_char(T, From, To, [To|Acc]); + _ -> tr_char(T, From, To, [H|Acc]) + end. + +-define(SPACE_CHAR, 32). get_timezone(TimeZone) -> - case dict:find(TimeZone, ?tz_index) of + TimeZoneNoSpaces = tr_char(TimeZone, ?SPACE_CHAR, $_), + case dict:find(TimeZoneNoSpaces, ?tz_index) of error -> - TimeZone; + TimeZoneNoSpaces; {ok, [TZName | _]} -> TZName end. + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +tr_char_test() -> + ?assertEqual("ABCDE", tr_char("ABCDE", ?SPACE_CHAR, $_)), + ?assertEqual("AB_DE", tr_char("AB DE", ?SPACE_CHAR, $_)), + ?assertEqual("A_C_E", tr_char("A C E", ?SPACE_CHAR, $_)). + +get_timezone_test() -> + ?assertEqual("America/Los_Angeles", get_timezone("America/Los Angeles")). + +tz_shift_test() -> + ?assertEqual({'+',3,0}, tz_shift({{2014,1,1},{12,0,0}}, "America/Los_Angeles", "America/New_York")). + +-endif. % TEST From ab922e427b83251ba87261fbee4581622de23e48 Mon Sep 17 00:00:00 2001 From: David Hull Date: Fri, 10 Jan 2014 01:44:56 +0000 Subject: [PATCH 4/5] Update timezone database from Olson 2013i. Some adjustments had to be made for the erlang_localtime format; these are noted in the database file. --- include/tz_database.hrl | 384 ++++++++++++++++++++++------ include/tz_index.hrl | 547 +++++++++++++++++++++++++--------------- 2 files changed, 642 insertions(+), 289 deletions(-) diff --git a/include/tz_database.hrl b/include/tz_database.hrl index 2b56c99..7136193 100644 --- a/include/tz_database.hrl +++ b/include/tz_database.hrl @@ -35,10 +35,33 @@ -define(tz_database, [ + %% Automatically generated from the time zone database version 2013i for 2014-01-09. + + %% Problems: + %% Ignored Jun 29 in Rule Morocco. + %% Ignored Jul 29 in Rule Morocco. + %% Rounded Apr Sun>=23 to [4 sun apr] in Rule ChileAQ. + %% Rounded Sep Sun>=2 to [1 sun sep] in Rule ChileAQ. + %% Ignored Mar 22 in Rule Iran. + %% Ignored Sep 22 in Rule Iran. + %% Rounded Mar Fri>=23 to [4 fri mar] in Rule Zion. + %% Rounded Sep Fri>=21 to [4 fri sep] in Rule Palestine. + %% Rounded Oct Sun>=21 to [4 sun oct] in Rule Fiji. + %% Rounded Jan Sun>=18 to [3 sun jan] in Rule Fiji. + %% Rounded Apr Sun>=23 to [4 sun apr] in Rule Chile. + %% Rounded Sep Sun>=2 to [1 sun sep] in Rule Chile. + %% Discarded excess rules for Zone Africa/Casablanca. + %% Discarded excess rules for Zone Africa/El_Aaiun. + %% Moving rule to beginning of day for Zone America/Godthab. + %% Moving rule to beginning of day for Zone America/Godthab. + %% Moving rule to beginning of day for Zone Pacific/Easter. + %% Moving rule to beginning of day for Zone Pacific/Easter. + {"Africa/Abidjan",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Accra",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Addis_Ababa",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Algiers",{"CET","CET"},undef,60,0,undef,{0,0},undef,{0,0}}, + {"Africa/Asmara",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Asmera",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Bamako",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Bangui",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, @@ -47,19 +70,20 @@ {"Africa/Blantyre",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Brazzaville",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, {"Africa/Bujumbura",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, - {"Africa/Cairo",{"EET","EET"},{"EEST","EEST"},120,60,{last,fri,apr},{0,0},{last,fri,sep},{0,0}}, - {"Africa/Casablanca",{"WET","WET"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Africa/Cairo",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, + {"Africa/Casablanca",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Africa/Ceuta",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Africa/Conakry",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Dakar",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Dar_es_Salaam",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Djibouti",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Douala",{"WAT","WAT"},undef,60,0,undef,{0,0},undef,{0,0}}, - {"Africa/El_Aaiun",{"WET","WET"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Africa/El_Aaiun",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Africa/Freetown",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Africa/Gaborone",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Harare",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, {"Africa/Johannesburg",{"SAST","SAST"},undef,120,0,undef,{0,0},undef,{0,0}}, + {"Africa/Juba",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Kampala",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Khartoum",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Africa/Kigali",{"CAT","CAT"},undef,120,0,undef,{0,0},undef,{0,0}}, @@ -91,55 +115,82 @@ {"America/Anchorage",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Anguilla",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Antigua",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Araguaina",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, + {"America/Araguaina",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Buenos_Aires",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Catamarca",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/ComodRivadavia",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Cordoba",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Jujuy",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/La_Rioja",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Mendoza",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Rio_Gallegos",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Salta",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/San_Juan",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/San_Luis",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Tucuman",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Argentina/Ushuaia",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Aruba",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Asuncion",{"PYT","PYT"},{"PYST","PYST"},-240,60,{1,sun,oct},{0,0},{1,sun,mar},{0,0}}, + {"America/Asuncion",{"PYT","PYT"},{"PYST","PYST"},-240,60,{1,sun,oct},{0,0},{4,sun,mar},{0,0}}, + {"America/Atikokan",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, + {"America/Atka",{"HAST","HAST"},{"HADT","HADT"},-600,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Bahia",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Bahia_Banderas",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Barbados",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Belem",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Belize",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, + {"America/Blanc-Sablon",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Boa_Vista",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Bogota",{"COT","COT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Boise",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Buenos_Aires",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Cambridge_Bay",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Campo_Grande",{"AMT","AMT"},{"AMST","AMST"},-240,60,{3,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Cancun",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, - {"America/Caracas",{"VET","VET"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Caracas",{"VET","VET"},undef,-270,0,undef,{0,0},undef,{0,0}}, {"America/Catamarca",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Cayenne",{"GFT","GFT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Cayman",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, - {"America/Chicago",{"CST","Central Standard Time"},{"CDT","Central Daylight Time"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Chicago",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Chihuahua",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, + {"America/Coral_Harbour",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Cordoba",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Costa_Rica",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, - {"America/Cuiaba",{"AMT","AMT"},{"AMST","AMST"},-240,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, + {"America/Creston",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, + {"America/Cuiaba",{"AMT","AMT"},{"AMST","AMST"},-240,60,{3,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Curacao",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Danmarkshavn",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"America/Dawson",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Dawson_Creek",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, - {"America/Denver",{"MST","Mountain Standard Time"},{"MDT","Mountain Daylight Time"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Denver",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Detroit",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Dominica",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Edmonton",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Eirunepe",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/El_Salvador",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, - {"America/Fortaleza",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, + {"America/Ensenada",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Fort_Wayne",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Fortaleza",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Glace_Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Godthab",{"WGT","WGT"},{"WGST","WGST"},-180,60,{last,sat,mar},{22,0},{last,sat,oct},{23,0}}, - {"America/Goose_Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{1,sun,apr},{0,1},{last,sun,oct},{0,1}}, - {"America/Grand_Turk",{"EST","EST"},{"EDT","EDT"},-300,60,{1,sun,apr},{0,0},{last,sun,oct},{0,0}}, + {"America/Godthab",{"WGT","WGT"},{"WGST","WGST"},-180,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, + {"America/Goose_Bay",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Grand_Turk",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Grenada",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Guadeloupe",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Guatemala",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Guayaquil",{"ECT","ECT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Guyana",{"GYT","GYT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Halifax",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Havana",{"CST","CST"},{"CDT","CDT"},-300,60,{1,sun,apr},{0,0},{last,sun,oct},{1,0}}, + {"America/Havana",{"CST","CST"},{"CDT","CDT"},-300,60,{2,sun,mar},{0,0},{1,sun,nov},{1,0}}, {"America/Hermosillo",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, - {"America/Indiana/Indianapolis",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, - {"America/Indiana/Knox",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, - {"America/Indiana/Marengo",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, - {"America/Indiana/Vevay",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, - {"America/Indianapolis",{"EST","EST"},undef,-300,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, + {"America/Indiana/Indianapolis",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Indiana/Knox",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Indiana/Marengo",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Indiana/Petersburg",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Indiana/Tell_City",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Indiana/Vevay",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Indiana/Vincennes",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Indiana/Winamac",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Indianapolis",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Inuvik",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Iqaluit",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Jamaica",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, @@ -147,112 +198,140 @@ {"America/Juneau",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Kentucky/Louisville",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Kentucky/Monticello",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Knox_IN",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Kralendijk",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/La_Paz",{"BOT","BOT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Lima",{"PET","PET"},undef,-300,0,undef,{0,0},undef,{0,0}}, - {"America/Los_Angeles",{"PST","Pacific Standard Time"},{"PDT","Pacific Daylight Time"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Los_Angeles",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Louisville",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Maceio",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, + {"America/Lower_Princes",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Maceio",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Managua",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Manaus",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Marigot",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Martinique",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Matamoros",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Mazatlan",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Mendoza",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Menominee",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Merida",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, + {"America/Metlakatla",{"MeST","MeST"},undef,-480,0,undef,{0,0},undef,{0,0}}, {"America/Mexico_City",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, {"America/Miquelon",{"PMST","PMST"},{"PMDT","PMDT"},-180,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Moncton",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Monterrey",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, - {"America/Montevideo",{"UYT","UYT"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Montevideo",{"UYT","UYT"},{"UYST","UYST"},-180,60,{1,sun,oct},{2,0},{2,sun,mar},{2,0}}, {"America/Montreal",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Montserrat",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Nassau",{"EST","EST"},{"EDT","EDT"},-300,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, - {"America/New_York",{"EST","Eastern Standard Time"},{"EDT","Eastern Daylight Time"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Nassau",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/New_York",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Nipigon",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Nome",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Noronha",{"FNT","FNT"},undef,-120,0,undef,{0,0},undef,{0,0}}, + {"America/North_Dakota/Beulah",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/North_Dakota/Center",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/North_Dakota/New_Salem",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Ojinaga",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Panama",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Pangnirtung",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Paramaribo",{"SRT","SRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, - {"America/Phoenix",{"MST","Mountain Standard Time"},undef,-420,0,undef,{0,0},undef,{0,0}}, - {"America/Port-au-Prince",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, + {"America/Phoenix",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, + {"America/Port-au-Prince",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Port_of_Spain",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/Porto_Acre",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Porto_Velho",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Puerto_Rico",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Rainy_River",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Rankin_Inlet",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Recife",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, + {"America/Recife",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, {"America/Regina",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, + {"America/Resolute",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Rio_Branco",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, {"America/Rosario",{"ART","ART"},undef,-180,0,undef,{0,0},undef,{0,0}}, - {"America/Santiago",{"CLT","CLT"},{"CLST","CLST"},-240,60,{2,sun,oct},{0,0},{2,sun,mar},{0,0}}, + {"America/Santa_Isabel",{"PST","PST"},{"PDT","PDT"},-480,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, + {"America/Santarem",{"BRT","BRT"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"America/Santiago",{"CLT","CLT"},{"CLST","CLST"},-240,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}}, {"America/Santo_Domingo",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, - {"America/Sao_Paulo",{"BRT","BRT"},{"BRST","BRST"},-180,60,{2,sun,oct},{0,0},{3,sun,feb},{0,0}}, + {"America/Sao_Paulo",{"BRT","BRT"},{"BRST","BRST"},-180,60,{3,sun,oct},{0,0},{3,sun,feb},{0,0}}, {"America/Scoresbysund",{"EGT","EGT"},{"EGST","EGST"},-60,60,{last,sun,mar},{0,0},{last,sun,oct},{1,0}}, {"America/Shiprock",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/St_Johns",{"NST","NST"},{"NDT","NDT"},-210,60,{1,sun,apr},{0,1},{last,sun,oct},{0,1}}, + {"America/Sitka",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/St_Barthelemy",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"America/St_Johns",{"NST","NST"},{"NDT","NDT"},-210,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/St_Kitts",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/St_Lucia",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/St_Thomas",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/St_Vincent",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Swift_Current",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"America/Tegucigalpa",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, - {"America/Thule",{"AST","AST"},undef,-240,0,{2,sun,mar},{0,0},{1,sun,nov},{0,0}}, + {"America/Thule",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Thunder_Bay",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Tijuana",{"PST","PST"},{"PDT","PDT"},-480,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, + {"America/Tijuana",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Toronto",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Tortola",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Vancouver",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"America/Virgin",{"AST","AST"},undef,-240,0,undef,{0,0},undef,{0,0}}, {"America/Whitehorse",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, - {"America/Winnipeg",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{3,0}}, + {"America/Winnipeg",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Yakutat",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"America/Yellowknife",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"Antarctica/Casey",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Antarctica/Davis",{"DAVT","DAVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Antarctica/DumontDUrville",{"DDUT","DDUT"},undef,600,0,undef,{0,0},undef,{0,0}}, - {"Antarctica/Mawson",{"MAWT","MAWT"},undef,360,0,undef,{0,0},undef,{0,0}}, - {"Antarctica/McMurdo",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, - {"Antarctica/Palmer",{"CLT","CLT"},{"CLST","CLST"},-240,60,{2,sun,oct},{0,0},{2,sun,mar},{0,0}}, - {"Antarctica/South_Pole",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, + {"Antarctica/Macquarie",{"MIST","MIST"},undef,660,0,undef,{0,0},undef,{0,0}}, + {"Antarctica/Mawson",{"MAWT","MAWT"},undef,300,0,undef,{0,0},undef,{0,0}}, + {"Antarctica/McMurdo",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{last,sun,sep},{2,0},{1,sun,apr},{3,0}}, + {"Antarctica/Palmer",{"CLT","CLT"},{"CLST","CLST"},-240,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}}, + {"Antarctica/Rothera",{"ROTT","ROTT"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"Antarctica/South_Pole",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{last,sun,sep},{2,0},{1,sun,apr},{3,0}}, {"Antarctica/Syowa",{"SYOT","SYOT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Antarctica/Vostok",{"VOST","VOST"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Arctic/Longyearbyen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Asia/Aden",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, - {"Asia/Almaty",{"ALMT","ALMT"},{"ALMST","ALMST"},360,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, - {"Asia/Amman",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{0,0},{last,thu,sep},{1,0}}, - {"Asia/Anadyr",{"ANAT","ANAT"},{"ANAST","ANAST"},720,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, - {"Asia/Aqtau",{"AQTT","AQTT"},{"AQTST","AQTST"},240,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, - {"Asia/Aqtobe",{"AQTT","AQTT"},{"AQTST","AQTST"},300,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, + {"Asia/Almaty",{"ALMT","ALMT"},undef,360,0,undef,{0,0},undef,{0,0}}, + {"Asia/Amman",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{24,0},{last,fri,oct},{1,0}}, + {"Asia/Anadyr",{"ANAT","ANAT"},undef,720,0,undef,{0,0},undef,{0,0}}, + {"Asia/Aqtau",{"AQTT","AQTT"},undef,300,0,undef,{0,0},undef,{0,0}}, + {"Asia/Aqtobe",{"AQTT","AQTT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Ashgabat",{"TMT","TMT"},undef,300,0,undef,{0,0},undef,{0,0}}, - {"Asia/Baghdad",{"AST","AST"},{"ADT","ADT"},180,60,{1,sun,apr},{3,0},{1,sun,oct},{4,0}}, + {"Asia/Ashkhabad",{"TMT","TMT"},undef,300,0,undef,{0,0},undef,{0,0}}, + {"Asia/Baghdad",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Bahrain",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, - {"Asia/Baku",{"AZT","AZT"},{"AZST","AZST"},240,60,{last,sun,mar},{1,0},{last,sun,oct},{1,0}}, + {"Asia/Baku",{"AZT","AZT"},{"AZST","AZST"},240,60,{last,sun,mar},{4,0},{last,sun,oct},{5,0}}, {"Asia/Bangkok",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Beirut",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, - {"Asia/Bishkek",{"KGT","KGT"},{"KGST","KGST"},300,60,{last,sun,mar},{2,30},{last,sun,oct},{2,30}}, + {"Asia/Bishkek",{"KGT","KGT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Brunei",{"BNT","BNT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Calcutta",{"IST","IST"},undef,330,0,undef,{0,0},undef,{0,0}}, - {"Asia/Choibalsan",{"CHOT","CHOT"},undef,540,0,undef,{0,0},undef,{0,0}}, + {"Asia/Choibalsan",{"CHOT","CHOT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Chongqing",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, - {"Asia/Colombo",{"LKT","LKT"},undef,360,0,undef,{0,0},undef,{0,0}}, - {"Asia/Damascus",{"EET","EET"},{"EEST","EEST"},120,60,{1,sun,apr},{0,0},{1,sun,oct},{0,0}}, + {"Asia/Chungking",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Colombo",{"IST","IST"},undef,330,0,undef,{0,0},undef,{0,0}}, + {"Asia/Dacca",{"BDT","BDT"},undef,360,0,undef,{0,0},undef,{0,0}}, + {"Asia/Damascus",{"EET","EET"},{"EEST","EEST"},120,60,{last,fri,mar},{0,0},{last,fri,oct},{0,0}}, {"Asia/Dhaka",{"BDT","BDT"},undef,360,0,undef,{0,0},undef,{0,0}}, - {"Asia/Dili",{"TPT","TPT"},undef,540,0,undef,{0,0},undef,{0,0}}, + {"Asia/Dili",{"TLT","TLT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Dubai",{"GST","GST"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Asia/Dushanbe",{"TJT","TJT"},undef,300,0,undef,{0,0},undef,{0,0}}, - {"Asia/Gaza",{"EET","EET"},{"EEST","EEST"},120,60,{3,fri,apr},{0,0},{3,fri,oct},{0,0}}, + {"Asia/Gaza",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{24,0},{4,fri,sep},{0,0}}, {"Asia/Harbin",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Hebron",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{24,0},{4,fri,sep},{0,0}}, + {"Asia/Ho_Chi_Minh",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Hong_Kong",{"HKT","HKT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Hovd",{"HOVT","HOVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Irkutsk",{"IRKT","IRKT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Istanbul",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, - {"Asia/Jakarta",{"WIT","WIT"},undef,420,0,undef,{0,0},undef,{0,0}}, - {"Asia/Jayapura",{"EIT","EIT"},undef,540,0,undef,{0,0},undef,{0,0}}, - {"Asia/Jerusalem",{"IST","IST"},{"IDT","IDT"},120,60,{1,sun,apr},{1,0},{1,sun,oct},{1,0}}, + {"Asia/Jakarta",{"WIB","WIB"},undef,420,0,undef,{0,0},undef,{0,0}}, + {"Asia/Jayapura",{"WIT","WIT"},undef,540,0,undef,{0,0},undef,{0,0}}, + {"Asia/Jerusalem",{"IST","IST"},{"IDT","IDT"},120,60,{4,fri,mar},{2,0},{last,sun,oct},{2,0}}, {"Asia/Kabul",{"AFT","AFT"},undef,270,0,undef,{0,0},undef,{0,0}}, - {"Asia/Kamchatka",{"PETT","PETT"},undef,780,0,undef,{0,0},undef,{0,0}}, + {"Asia/Kamchatka",{"PETT","PETT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Asia/Karachi",{"PKT","PKT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Kashgar",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Kathmandu",{"NPT","NPT"},undef,345,0,undef,{0,0},undef,{0,0}}, {"Asia/Katmandu",{"NPT","NPT"},undef,345,0,undef,{0,0},undef,{0,0}}, + {"Asia/Khandyga",{"YAKT","YAKT"},undef,600,0,undef,{0,0},undef,{0,0}}, + {"Asia/Kolkata",{"IST","IST"},undef,330,0,undef,{0,0},undef,{0,0}}, {"Asia/Krasnoyarsk",{"KRAT","KRAT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Kuala_Lumpur",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Kuching",{"MYT","MYT"},undef,480,0,undef,{0,0},undef,{0,0}}, @@ -260,18 +339,19 @@ {"Asia/Macao",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Macau",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Magadan",{"MAGT","MAGT"},undef,720,0,undef,{0,0},undef,{0,0}}, - {"Asia/Makassar",{"CIT","CIT"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Makassar",{"WITA","WITA"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Manila",{"PHT","PHT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Muscat",{"GST","GST"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Asia/Nicosia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, + {"Asia/Novokuznetsk",{"NOVT","NOVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Novosibirsk",{"NOVT","NOVT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Omsk",{"OMST","OMST"},undef,420,0,undef,{0,0},undef,{0,0}}, - {"Asia/Oral",{"WST","WST"},undef,300,0,undef,{0,0},undef,{0,0}}, + {"Asia/Oral",{"ORAT","ORAT"},undef,300,0,undef,{0,0},undef,{0,0}}, {"Asia/Phnom_Penh",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, - {"Asia/Pontianak",{"WIT","WIT"},undef,420,0,undef,{0,0},undef,{0,0}}, + {"Asia/Pontianak",{"WIB","WIB"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Pyongyang",{"KST","KST"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Asia/Qatar",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, - {"Asia/Qyzylorda",{"KST","KST"},undef,360,0,undef,{0,0},undef,{0,0}}, + {"Asia/Qyzylorda",{"QYZT","QYZT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Rangoon",{"MMT","MMT"},undef,390,0,undef,{0,0},undef,{0,0}}, {"Asia/Riyadh",{"AST","AST"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Asia/Saigon",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, @@ -282,39 +362,115 @@ {"Asia/Singapore",{"SGT","SGT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Taipei",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Tashkent",{"UZT","UZT"},undef,300,0,undef,{0,0},undef,{0,0}}, - {"Asia/Tbilisi",{"GET","GET"},{"GEST","GEST"},240,60,{last,sun,mar},{0,0},{last,sun,oct},{0,0}}, - {"Asia/Tehran",{"IRT","IRT"},undef,210,0,undef,{0,0},undef,{0,0}}, + {"Asia/Tbilisi",{"GET","GET"},undef,240,0,undef,{0,0},undef,{0,0}}, + {"Asia/Tehran",{"IRST","IRST"},{"IRDT","IRDT"},210,60,undef,{0,0},undef,{0,0}}, + {"Asia/Tel_Aviv",{"IST","IST"},{"IDT","IDT"},120,60,{4,fri,mar},{2,0},{last,sun,oct},{2,0}}, + {"Asia/Thimbu",{"BTT","BTT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Thimphu",{"BTT","BTT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Asia/Tokyo",{"JST","JST"},undef,540,0,undef,{0,0},undef,{0,0}}, - {"Asia/Ujung_Pandang",{"CIT","CIT"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Ujung_Pandang",{"WITA","WITA"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Ulaanbaatar",{"ULAT","ULAT"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Ulan_Bator",{"ULAT","ULAT"},undef,480,0,undef,{0,0},undef,{0,0}}, {"Asia/Urumqi",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Asia/Ust-Nera",{"VLAT","VLAT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Asia/Vientiane",{"ICT","ICT"},undef,420,0,undef,{0,0},undef,{0,0}}, {"Asia/Vladivostok",{"VLAT","VLAT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Asia/Yakutsk",{"YAKT","YAKT"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Asia/Yekaterinburg",{"YEKT","YEKT"},undef,360,0,undef,{0,0},undef,{0,0}}, - {"Asia/Yerevan",{"AMT","AMT"},{"AMST","AMST"},240,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"Asia/Yerevan",{"AMT","AMT"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Atlantic/Azores",{"AZOT","AZOT"},{"AZOST","AZOST"},-60,60,{last,sun,mar},{0,0},{last,sun,oct},{1,0}}, - {"Atlantic/Bermuda",{"AST","AST"},{"ADT","ADT"},-240,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, + {"Atlantic/Bermuda",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, {"Atlantic/Canary",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Atlantic/Cape_Verde",{"CVT","CVT"},undef,-60,0,undef,{0,0},undef,{0,0}}, {"Atlantic/Faeroe",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, + {"Atlantic/Faroe",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Atlantic/Jan_Mayen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Atlantic/Madeira",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Atlantic/Reykjavik",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Atlantic/South_Georgia",{"GST","GST"},undef,-120,0,undef,{0,0},undef,{0,0}}, {"Atlantic/St_Helena",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, - {"Atlantic/Stanley",{"FKT","FKT"},{"FKST","FKST"},-240,60,{1,sun,sep},{2,0},{3,sun,apr},{2,0}}, - {"Australia/Adelaide",{"CST","CST"},{"CST","CST"},570,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, + {"Atlantic/Stanley",{"FKST","FKST"},undef,-180,0,undef,{0,0},undef,{0,0}}, + {"Australia/ACT",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/Adelaide",{"CST","CST"},{"CST","CST"},570,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, {"Australia/Brisbane",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}}, - {"Australia/Broken_Hill",{"CST","CST"},{"CST","CST"},570,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, + {"Australia/Broken_Hill",{"CST","CST"},{"CST","CST"},570,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/Canberra",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/Currie",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, {"Australia/Darwin",{"CST","CST"},undef,570,0,undef,{0,0},undef,{0,0}}, - {"Australia/Hobart",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{last,sun,mar},{3,0}}, + {"Australia/Eucla",{"CWST","CWST"},undef,525,0,undef,{0,0},undef,{0,0}}, + {"Australia/Hobart",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/LHI",{"LHST","LHST"},{"LHST","LHST"},630,30,{1,sun,oct},{2,0},{1,sun,apr},{2,0}}, {"Australia/Lindeman",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}}, - {"Australia/Lord_Howe",{"LHST","LHST"},{"LHST","LHST"},630,30,{last,sun,oct},{2,0},{last,sun,mar},{2,0}}, - {"Australia/Melbourne",{"EST","EST"},{"EST","EST"},600,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, + {"Australia/Lord_Howe",{"LHST","LHST"},{"LHST","LHST"},630,30,{1,sun,oct},{2,0},{1,sun,apr},{2,0}}, + {"Australia/Melbourne",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/NSW",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/North",{"CST","CST"},undef,570,0,undef,{0,0},undef,{0,0}}, {"Australia/Perth",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}}, - {"Australia/Sydney",{"EST","EST"},{"EST","EST"},600,60,{last,sun,oct},{2,0},{last,sun,mar},{3,0}}, + {"Australia/Queensland",{"EST","EST"},undef,600,0,undef,{0,0},undef,{0,0}}, + {"Australia/South",{"CST","CST"},{"CST","CST"},570,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/Sydney",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/Tasmania",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/Victoria",{"EST","EST"},{"EST","EST"},600,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Australia/West",{"WST","WST"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Australia/Yancowinna",{"CST","CST"},{"CST","CST"},570,60,{1,sun,oct},{2,0},{1,sun,apr},{3,0}}, + {"Brazil/Acre",{"ACT","ACT"},undef,-300,0,undef,{0,0},undef,{0,0}}, + {"Brazil/DeNoronha",{"FNT","FNT"},undef,-120,0,undef,{0,0},undef,{0,0}}, + {"Brazil/East",{"BRT","BRT"},{"BRST","BRST"},-180,60,{3,sun,oct},{0,0},{3,sun,feb},{0,0}}, + {"Brazil/West",{"AMT","AMT"},undef,-240,0,undef,{0,0},undef,{0,0}}, + {"CET",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"CST6CDT",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Canada/Atlantic",{"AST","AST"},{"ADT","ADT"},-240,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Canada/Central",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Canada/East-Saskatchewan",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, + {"Canada/Eastern",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Canada/Mountain",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Canada/Newfoundland",{"NST","NST"},{"NDT","NDT"},-210,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Canada/Pacific",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Canada/Saskatchewan",{"CST","CST"},undef,-360,0,undef,{0,0},undef,{0,0}}, + {"Canada/Yukon",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Chile/Continental",{"CLT","CLT"},{"CLST","CLST"},-240,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}}, + {"Chile/EasterIsland",{"EAST","EAST"},{"EASST","EASST"},-360,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}}, + {"Cuba",{"CST","CST"},{"CDT","CDT"},-300,60,{2,sun,mar},{0,0},{1,sun,nov},{1,0}}, + {"EET",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, + {"EST",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, + {"EST5EDT",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Egypt",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, + {"Eire",{"GMT","GMT"},{"IST","IST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, + {"Etc/GMT",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+1",{"GMT+1","GMT+1"},undef,-1,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+10",{"GMT+10","GMT+10"},undef,-10,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+11",{"GMT+11","GMT+11"},undef,-11,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+12",{"GMT+12","GMT+12"},undef,-12,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+2",{"GMT+2","GMT+2"},undef,-2,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+3",{"GMT+3","GMT+3"},undef,-3,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+4",{"GMT+4","GMT+4"},undef,-4,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+5",{"GMT+5","GMT+5"},undef,-5,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+6",{"GMT+6","GMT+6"},undef,-6,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+7",{"GMT+7","GMT+7"},undef,-7,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+8",{"GMT+8","GMT+8"},undef,-8,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT+9",{"GMT+9","GMT+9"},undef,-9,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-1",{"GMT-1","GMT-1"},undef,1,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-10",{"GMT-10","GMT-10"},undef,10,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-11",{"GMT-11","GMT-11"},undef,11,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-12",{"GMT-12","GMT-12"},undef,12,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-13",{"GMT-13","GMT-13"},undef,13,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-14",{"GMT-14","GMT-14"},undef,14,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-2",{"GMT-2","GMT-2"},undef,2,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-3",{"GMT-3","GMT-3"},undef,3,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-4",{"GMT-4","GMT-4"},undef,4,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-5",{"GMT-5","GMT-5"},undef,5,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-6",{"GMT-6","GMT-6"},undef,6,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-7",{"GMT-7","GMT-7"},undef,7,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-8",{"GMT-8","GMT-8"},undef,8,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT-9",{"GMT-9","GMT-9"},undef,9,0,undef,{0,0},undef,{0,0}}, + {"Etc/GMT0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Etc/Greenwich",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Etc/UCT",{"UCT","UCT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Etc/UTC",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Etc/Universal",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Etc/Zulu",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Europe/Amsterdam",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Andorra",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Athens",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, @@ -325,13 +481,17 @@ {"Europe/Brussels",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Bucharest",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Budapest",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"Europe/Busingen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Chisinau",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Copenhagen",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Dublin",{"GMT","GMT"},{"IST","IST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Europe/Gibraltar",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"Europe/Guernsey",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Europe/Helsinki",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, + {"Europe/Isle_of_Man",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Europe/Istanbul",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, - {"Europe/Kaliningrad",{"EET","EET"},undef,180,0,undef,{0,0},undef,{0,0}}, + {"Europe/Jersey",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, + {"Europe/Kaliningrad",{"FET","FET"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Europe/Kiev",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Lisbon",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, {"Europe/Ljubljana",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, @@ -339,33 +499,47 @@ {"Europe/Luxembourg",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Madrid",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Malta",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"Europe/Mariehamn",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Minsk",{"FET","FET"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Europe/Monaco",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Moscow",{"MSK","MSK"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Europe/Nicosia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Oslo",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Paris",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"Europe/Podgorica",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Prague",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Riga",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Rome",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, - {"Europe/Samara",{"SAMT","SAMT"},undef,300,0,undef,{0,0},undef,{0,0}}, + {"Europe/Samara",{"SAMT","SAMT"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Europe/San_Marino",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Sarajevo",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Simferopol",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Skopje",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Sofia",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Stockholm",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, - {"Europe/Tallinn",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, + {"Europe/Tallinn",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Tirane",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, - {"Europe/Uzhgorod",{"EET","EET"},undef,180,0,undef,{0,0},undef,{0,0}}, + {"Europe/Tiraspol",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, + {"Europe/Uzhgorod",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Vaduz",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Vatican",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Vienna",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, - {"Europe/Vilnius",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, + {"Europe/Vilnius",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, + {"Europe/Volgograd",{"VOLT","VOLT"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Europe/Warsaw",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Zagreb",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Europe/Zaporozhye",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, {"Europe/Zurich",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"GB",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, + {"GB-Eire",{"GMT","GMT"},{"BST","BST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, + {"GMT",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"GMT+0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"GMT-0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"GMT0",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Greenwich",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"HST",{"HST","HST"},undef,-600,0,undef,{0,0},undef,{0,0}}, + {"Hongkong",{"HKT","HKT"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Iceland",{"GMT","GMT"},undef,0,0,undef,{0,0},undef,{0,0}}, {"Indian/Antananarivo",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Indian/Chagos",{"IOT","IOT"},undef,360,0,undef,{0,0},undef,{0,0}}, {"Indian/Christmas",{"CXT","CXT"},undef,420,0,undef,{0,0},undef,{0,0}}, @@ -377,14 +551,32 @@ {"Indian/Mauritius",{"MUT","MUT"},undef,240,0,undef,{0,0},undef,{0,0}}, {"Indian/Mayotte",{"EAT","EAT"},undef,180,0,undef,{0,0},undef,{0,0}}, {"Indian/Reunion",{"RET","RET"},undef,240,0,undef,{0,0},undef,{0,0}}, - {"Pacific/Apia",{"WST","WST"},undef,-660,0,undef,{0,0},undef,{0,0}}, - {"Pacific/Auckland",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{1,sun,oct},{2,0},{3,sun,mar},{3,0}}, - {"Pacific/Chatham",{"CHAST","CHAST"},{"CHADT","CHADT"},765,60,{1,sun,oct},{2,45},{3,sun,mar},{3,45}}, - {"Pacific/Easter",{"EAST","EAST"},{"EASST","EASST"},-360,60,{2,sat,oct},{22,0},{2,sat,mar},{22,0}}, + {"Iran",{"IRST","IRST"},{"IRDT","IRDT"},210,60,undef,{0,0},undef,{0,0}}, + {"Israel",{"IST","IST"},{"IDT","IDT"},120,60,{4,fri,mar},{2,0},{last,sun,oct},{2,0}}, + {"Jamaica",{"EST","EST"},undef,-300,0,undef,{0,0},undef,{0,0}}, + {"Japan",{"JST","JST"},undef,540,0,undef,{0,0},undef,{0,0}}, + {"Kwajalein",{"MHT","MHT"},undef,720,0,undef,{0,0},undef,{0,0}}, + {"Libya",{"EET","EET"},undef,120,0,undef,{0,0},undef,{0,0}}, + {"MET",{"MET","MET"},{"MEST","MEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"MST",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, + {"MST7MDT",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Mexico/BajaNorte",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Mexico/BajaSur",{"MST","MST"},{"MDT","MDT"},-420,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, + {"Mexico/General",{"CST","CST"},{"CDT","CDT"},-360,60,{1,sun,apr},{2,0},{last,sun,oct},{2,0}}, + {"NZ",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{last,sun,sep},{2,0},{1,sun,apr},{3,0}}, + {"NZ-CHAT",{"CHAST","CHAST"},{"CHADT","CHADT"},765,60,{last,sun,sep},{2,45},{1,sun,apr},{3,45}}, + {"Navajo",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"PRC",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"PST8PDT",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"Pacific/Apia",{"WST","WST"},{"WSDT","WSDT"},780,1,{last,sun,sep},{3,0},{1,sun,apr},{4,0}}, + {"Pacific/Auckland",{"NZST","NZST"},{"NZDT","NZDT"},720,60,{last,sun,sep},{2,0},{1,sun,apr},{3,0}}, + {"Pacific/Chatham",{"CHAST","CHAST"},{"CHADT","CHADT"},765,60,{last,sun,sep},{2,45},{1,sun,apr},{3,45}}, + {"Pacific/Chuuk",{"CHUT","CHUT"},undef,600,0,undef,{0,0},undef,{0,0}}, + {"Pacific/Easter",{"EAST","EAST"},{"EASST","EASST"},-360,60,{1,sun,sep},{0,0},{4,sun,apr},{0,0}}, {"Pacific/Efate",{"VUT","VUT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Enderbury",{"PHOT","PHOT"},undef,780,0,undef,{0,0},undef,{0,0}}, - {"Pacific/Fakaofo",{"TKT","TKT"},undef,-600,0,undef,{0,0},undef,{0,0}}, - {"Pacific/Fiji",{"FJT","FJT"},undef,720,0,undef,{0,0},undef,{0,0}}, + {"Pacific/Fakaofo",{"TKT","TKT"},undef,780,0,undef,{0,0},undef,{0,0}}, + {"Pacific/Fiji",{"FJT","FJT"},{"FJST","FJST"},720,60,{4,sun,oct},{2,0},{3,sun,jan},{3,0}}, {"Pacific/Funafuti",{"TVT","TVT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Pacific/Galapagos",{"GALT","GALT"},undef,-360,0,undef,{0,0},undef,{0,0}}, {"Pacific/Gambier",{"GAMT","GAMT"},undef,-540,0,undef,{0,0},undef,{0,0}}, @@ -405,15 +597,41 @@ {"Pacific/Pago_Pago",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Palau",{"PWT","PWT"},undef,540,0,undef,{0,0},undef,{0,0}}, {"Pacific/Pitcairn",{"PST","PST"},undef,-480,0,undef,{0,0},undef,{0,0}}, + {"Pacific/Pohnpei",{"PONT","PONT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Ponape",{"PONT","PONT"},undef,660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Port_Moresby",{"PGT","PGT"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Rarotonga",{"CKT","CKT"},undef,-600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Saipan",{"ChST","ChST"},undef,600,0,undef,{0,0},undef,{0,0}}, + {"Pacific/Samoa",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}}, {"Pacific/Tahiti",{"TAHT","TAHT"},undef,-600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Tarawa",{"GILT","GILT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Pacific/Tongatapu",{"TOT","TOT"},undef,780,0,undef,{0,0},undef,{0,0}}, - {"Pacific/Truk",{"TRUT","TRUT"},undef,600,0,undef,{0,0},undef,{0,0}}, + {"Pacific/Truk",{"CHUT","CHUT"},undef,600,0,undef,{0,0},undef,{0,0}}, {"Pacific/Wake",{"WAKT","WAKT"},undef,720,0,undef,{0,0},undef,{0,0}}, {"Pacific/Wallis",{"WFT","WFT"},undef,720,0,undef,{0,0},undef,{0,0}}, - {"Pacific/Yap",{"YAPT","YAPT"},undef,600,0,undef,{0,0},undef,{0,0}} + {"Pacific/Yap",{"CHUT","CHUT"},undef,600,0,undef,{0,0},undef,{0,0}}, + {"Poland",{"CET","CET"},{"CEST","CEST"},60,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, + {"Portugal",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, + {"ROC",{"CST","CST"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"ROK",{"KST","KST"},undef,540,0,undef,{0,0},undef,{0,0}}, + {"Singapore",{"SGT","SGT"},undef,480,0,undef,{0,0},undef,{0,0}}, + {"Turkey",{"EET","EET"},{"EEST","EEST"},120,60,{last,sun,mar},{3,0},{last,sun,oct},{4,0}}, + {"UCT",{"UCT","UCT"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"US/Alaska",{"AKST","AKST"},{"AKDT","AKDT"},-540,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/Aleutian",{"HAST","HAST"},{"HADT","HADT"},-600,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/Arizona",{"MST","MST"},undef,-420,0,undef,{0,0},undef,{0,0}}, + {"US/Central",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/East-Indiana",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/Eastern",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/Hawaii",{"HST","HST"},undef,-600,0,undef,{0,0},undef,{0,0}}, + {"US/Indiana-Starke",{"CST","CST"},{"CDT","CDT"},-360,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/Michigan",{"EST","EST"},{"EDT","EDT"},-300,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/Mountain",{"MST","MST"},{"MDT","MDT"},-420,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/Pacific",{"PST","PST"},{"PDT","PDT"},-480,60,{2,sun,mar},{2,0},{1,sun,nov},{2,0}}, + {"US/Samoa",{"SST","SST"},undef,-660,0,undef,{0,0},undef,{0,0}}, + {"UTC",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"Universal",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}}, + {"W-SU",{"MSK","MSK"},undef,240,0,undef,{0,0},undef,{0,0}}, + {"WET",{"WET","WET"},{"WEST","WEST"},0,60,{last,sun,mar},{1,0},{last,sun,oct},{2,0}}, + {"Zulu",{"UTC","UTC"},undef,0,0,undef,{0,0},undef,{0,0}} ]). diff --git a/include/tz_index.hrl b/include/tz_index.hrl index e33a820..81e7294 100644 --- a/include/tz_index.hrl +++ b/include/tz_index.hrl @@ -1,85 +1,69 @@ --define(tz_index, {dict,165,33,64,32,165,99, +-define(tz_index, {dict,198,40,64,32,200,120, {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[["WGST","America/Godthab"]], - [["AQTT","Asia/Aqtau","Asia/Aqtobe"], - ["AZST","Asia/Baku"], - ["NPT","Asia/Katmandu"], - ["CCT","Indian/Cocos"], - ["ChST","Pacific/Guam","Pacific/Saipan"], - ["SST","Pacific/Midway","Pacific/Pago Pago"]], - [["WAST","Africa/Windhoek"], - ["DAVT","Antarctica/Davis"], + {{[["WGST","America/Godthab"],["GMT+2","Etc/GMT+2"]], + [["NPT","Asia/Kathmandu","Asia/Katmandu"], + ["CCT","Indian/Cocos"]], + [["DAVT","Antarctica/Davis"], ["AZT","Asia/Baku"], - ["HKT","Asia/Hong Kong"], - ["IRT","Asia/Tehran"], - ["NUT","Pacific/Niue"]], - [["MST","America/Boise","America/Cambridge Bay", - "America/Chihuahua","America/Dawson Creek", - "America/Denver","America/Edmonton", - "America/Hermosillo","America/Inuvik", - "America/Mazatlan","America/Phoenix", - "America/Shiprock","America/Yellowknife"], - ["PHT","Asia/Manila"]], - [["ADT","America/Glace Bay","America/Goose Bay", - "America/Halifax","Asia/Baghdad", - "Atlantic/Bermuda"], - ["DDUT","Antarctica/DumontDUrville"], - ["KGST","Asia/Bishkek"], - ["MAGT","Asia/Magadan"], - ["GAMT","Pacific/Gambier"], - ["SBT","Pacific/Guadalcanal"]], - [["EET","Africa/Cairo","Africa/Tripoli", - "Asia/Amman","Asia/Beirut","Asia/Damascus", - "Asia/Gaza","Asia/Istanbul","Asia/Nicosia", - "Europe/Athens","Europe/Bucharest", - "Europe/Chisinau","Europe/Helsinki", - "Europe/Istanbul","Europe/Kaliningrad", - "Europe/Kiev","Europe/Nicosia","Europe/Riga", - "Europe/Simferopol","Europe/Sofia", - "Europe/Tallinn","Europe/Uzhgorod", - "Europe/Vilnius","Europe/Zaporozhye"], - ["NDT","America/St Johns"], - ["GST","Asia/Dubai","Asia/Muscat", - "Atlantic/South Georgia"], - ["SGT","Asia/Singapore"]], + ["HKT","Asia/Hong_Kong","Hongkong"]], + [["MST","America/Boise","America/Cambridge_Bay", + "America/Chihuahua","America/Creston", + "America/Dawson_Creek","America/Denver", + "America/Edmonton","America/Hermosillo", + "America/Inuvik","America/Mazatlan", + "America/Ojinaga","America/Phoenix", + "America/Shiprock","America/Yellowknife", + "Canada/Mountain","MST","MST7MDT", + "Mexico/BajaSur","Navajo","US/Arizona", + "US/Mountain"], + ["GMT-7","Etc/GMT-7"]], + [["ROTT","Antarctica/Rothera"], + ["GMT-13","Etc/GMT-13"], + ["GMT-4","Etc/GMT-4"], + ["GAMT","Pacific/Gambier"]], + [["SGT","Asia/Singapore","Singapore"], + ["GMT-1","Etc/GMT-1"], + ["GMT-10","Etc/GMT-10"]], [["SAKT","Asia/Sakhalin"], - ["UZT","Asia/Samarkand","Asia/Tashkent"], - ["GEST","Asia/Tbilisi"], - ["LHST","Australia/Lord Howe", - "Australia/Lord Howe"], - ["MSK","Europe/Moscow"], - ["RET","Indian/Reunion"], + ["LHST","Australia/LHI","Australia/LHI", + "Australia/Lord_Howe","Australia/Lord_Howe"], + ["MSK","Europe/Moscow","W-SU"], ["PHOT","Pacific/Enderbury"], ["PWT","Pacific/Palau"]], - [["CAT","Africa/Blantyre","Africa/Bujumbura", - "Africa/Gaborone","Africa/Harare","Africa/Kigali", - "Africa/Lubumbashi","Africa/Lusaka", - "Africa/Maputo"], - ["AST","America/Anguilla","America/Antigua", + [["AST","America/Anguilla","America/Antigua", "America/Aruba","America/Barbados", - "America/Curacao","America/Dominica", - "America/Glace Bay","America/Goose Bay", - "America/Grenada","America/Guadeloupe", - "America/Halifax","America/Martinique", - "America/Montserrat","America/Port of Spain", - "America/Puerto Rico","America/Santo Domingo", - "America/St Kitts","America/St Lucia", - "America/St Thomas","America/St Vincent", - "America/Thule","America/Tortola","Asia/Aden", - "Asia/Baghdad","Asia/Bahrain","Asia/Kuwait", - "Asia/Qatar","Asia/Riyadh","Atlantic/Bermuda"], - ["FKST","Atlantic/Stanley"], - ["EASST","Pacific/Easter"]], - [["NST","America/St Johns"], - ["AQTST","Asia/Aqtau","Asia/Aqtobe"], + "America/Blanc-Sablon","America/Curacao", + "America/Dominica","America/Glace_Bay", + "America/Goose_Bay","America/Grenada", + "America/Guadeloupe","America/Halifax", + "America/Kralendijk","America/Lower_Princes", + "America/Marigot","America/Martinique", + "America/Moncton","America/Montserrat", + "America/Port_of_Spain","America/Puerto_Rico", + "America/Santo_Domingo","America/St_Barthelemy", + "America/St_Kitts","America/St_Lucia", + "America/St_Thomas","America/St_Vincent", + "America/Thule","America/Tortola", + "America/Virgin","Asia/Aden","Asia/Baghdad", + "Asia/Bahrain","Asia/Kuwait","Asia/Qatar", + "Asia/Riyadh","Atlantic/Bermuda", + "Canada/Atlantic"], + ["EASST","Chile/EasterIsland","Pacific/Easter"]], + [["NST","America/St_Johns","Canada/Newfoundland"], + ["MIST","Antarctica/Macquarie"], + ["WITA","Asia/Makassar","Asia/Ujung_Pandang"], ["YEKT","Asia/Yekaterinburg"]], - [["BDT","Asia/Dhaka"],["CKT","Pacific/Rarotonga"]], + [["BDT","Asia/Dacca","Asia/Dhaka"], + ["GMT+7","Etc/GMT+7"], + ["CKT","Pacific/Rarotonga"]], [["PKT","Asia/Karachi"], - ["NOVT","Asia/Novosibirsk"], - ["FET","Europe/Minsk"], + ["NOVT","Asia/Novokuznetsk","Asia/Novosibirsk"], + ["GMT+4","Etc/GMT+4"], + ["FET","Europe/Kaliningrad","Europe/Minsk"], + ["HST","HST","Pacific/Honolulu","Pacific/Johnston", + "US/Hawaii"], ["MVT","Indian/Maldives"], ["VUT","Pacific/Efate"], - ["HST","Pacific/Honolulu","Pacific/Johnston"], ["LINT","Pacific/Kiritimati"]], [["WAT","Africa/Bangui","Africa/Brazzaville", "Africa/Douala","Africa/Kinshasa","Africa/Lagos", @@ -89,231 +73,382 @@ ["ECT","America/Guayaquil"], ["VOST","Antarctica/Vostok"], ["BNT","Asia/Brunei"], - ["CHADT","Pacific/Chatham"], + ["TLT","Asia/Dili"], + ["GMT+1","Etc/GMT+1"], + ["CHADT","NZ-CHAT","Pacific/Chatham"], ["FJT","Pacific/Fiji"]], - [["EEST","Africa/Cairo","Asia/Amman","Asia/Beirut", - "Asia/Damascus","Asia/Gaza","Asia/Istanbul", - "Asia/Nicosia","Europe/Athens","Europe/Bucharest", - "Europe/Chisinau","Europe/Helsinki", - "Europe/Istanbul","Europe/Kiev","Europe/Nicosia", - "Europe/Riga","Europe/Simferopol","Europe/Sofia", - "Europe/Zaporozhye"], - ["HADT","America/Adak"], - ["IDT","Asia/Jerusalem"], - ["BST","Europe/Belfast","Europe/London"], + [["HADT","America/Adak","America/Atka", + "US/Aleutian"], + ["EEST","Asia/Amman","Asia/Beirut","Asia/Damascus", + "Asia/Gaza","Asia/Hebron","Asia/Istanbul", + "Asia/Nicosia","EET","Europe/Athens", + "Europe/Bucharest","Europe/Chisinau", + "Europe/Helsinki","Europe/Istanbul","Europe/Kiev", + "Europe/Mariehamn","Europe/Nicosia","Europe/Riga", + "Europe/Simferopol","Europe/Sofia", + "Europe/Tallinn","Europe/Tiraspol", + "Europe/Uzhgorod","Europe/Vilnius", + "Europe/Zaporozhye","Turkey"], + ["IDT","Asia/Jerusalem","Asia/Tel_Aviv","Israel"], + ["CWST","Australia/Eucla"], + ["BST","Europe/Belfast","Europe/Guernsey", + "Europe/Isle_of_Man","Europe/Jersey", + "Europe/London","GB","GB-Eire"], ["KOST","Pacific/Kosrae"], ["WFT","Pacific/Wallis"]], [["ALMT","Asia/Almaty"], ["CHOT","Asia/Choibalsan"], ["AZOT","Atlantic/Azores"], + ["GMT-9","Etc/GMT-9"], + ["MET","MET"], ["TVT","Pacific/Funafuti"]], [["SAST","Africa/Johannesburg","Africa/Maseru", "Africa/Mbabane"], - ["CDT","America/Cancun","America/Chicago", - "America/Havana","America/Menominee", - "America/Merida","America/Mexico City", - "America/Monterrey","America/North Dakota/Center", - "America/Rainy River","America/Rankin Inlet", - "America/Winnipeg"], - ["CHAST","Pacific/Chatham"]], - [["HAST","America/Adak"], + ["CDT","America/Bahia_Banderas","America/Cancun", + "America/Chicago","America/Havana", + "America/Indiana/Knox", + "America/Indiana/Tell_City","America/Knox_IN", + "America/Matamoros","America/Menominee", + "America/Merida","America/Mexico_City", + "America/Monterrey","America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Rainy_River","America/Rankin_Inlet", + "America/Resolute","America/Winnipeg","CST6CDT", + "Canada/Central","Cuba","Mexico/General", + "US/Central","US/Indiana-Starke"], + ["GMT-6","Etc/GMT-6"], + ["CHAST","NZ-CHAT","Pacific/Chatham"]], + [["HAST","America/Adak","America/Atka", + "US/Aleutian"], ["PYST","America/Asuncion"], - ["PDT","America/Dawson","America/Los Angeles", + ["PDT","America/Dawson","America/Ensenada", + "America/Los_Angeles","America/Santa_Isabel", "America/Tijuana","America/Vancouver", - "America/Whitehorse"], - ["IST","Asia/Calcutta","Asia/Jerusalem", - "Europe/Dublin"], - ["CIT","Asia/Makassar","Asia/Ujung Pandang"], - ["GET","Asia/Tbilisi"]]}, - {[["PMDT","America/Miquelon"]], - [["EAT","Africa/Addis Ababa","Africa/Asmera", - "Africa/Dar es Salaam","Africa/Djibouti", - "Africa/Kampala","Africa/Khartoum", - "Africa/Mogadishu","Africa/Nairobi", - "Indian/Antananarivo","Indian/Comoro", - "Indian/Mayotte"], - ["CST","America/Belize","America/Cancun", - "America/Chicago","America/Costa Rica", - "America/El Salvador","America/Guatemala", - "America/Havana","America/Managua", + "America/Whitehorse","Canada/Pacific", + "Canada/Yukon","Mexico/BajaNorte","PST8PDT", + "US/Pacific"], + ["IST","Asia/Calcutta","Asia/Colombo", + "Asia/Jerusalem","Asia/Kolkata","Asia/Tel_Aviv", + "Eire","Europe/Dublin","Israel"], + ["GET","Asia/Tbilisi"], + ["GMT-12","Etc/GMT-12"], + ["GMT-3","Etc/GMT-3"]]}, + {[["PMDT","America/Miquelon"], + ["GMT+11","Etc/GMT+11"], + ["VOLT","Europe/Volgograd"]], + [["EAT","Africa/Addis_Ababa","Africa/Asmara", + "Africa/Asmera","Africa/Dar_es_Salaam", + "Africa/Djibouti","Africa/Juba","Africa/Kampala", + "Africa/Khartoum","Africa/Mogadishu", + "Africa/Nairobi","Indian/Antananarivo", + "Indian/Comoro","Indian/Mayotte"], + ["CST","America/Bahia_Banderas","America/Belize", + "America/Cancun","America/Chicago", + "America/Costa_Rica","America/El_Salvador", + "America/Guatemala","America/Havana", + "America/Indiana/Knox", + "America/Indiana/Tell_City","America/Knox_IN", + "America/Managua","America/Matamoros", "America/Menominee","America/Merida", - "America/Mexico City","America/Monterrey", - "America/North Dakota/Center", - "America/Rainy River","America/Rankin Inlet", - "America/Regina","America/Swift Current", - "America/Tegucigalpa","America/Winnipeg", - "Asia/Chongqing","Asia/Harbin","Asia/Kashgar", + "America/Mexico_City","America/Monterrey", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Rainy_River","America/Rankin_Inlet", + "America/Regina","America/Resolute", + "America/Swift_Current","America/Tegucigalpa", + "America/Winnipeg","Asia/Chongqing", + "Asia/Chungking","Asia/Harbin","Asia/Kashgar", "Asia/Macao","Asia/Macau","Asia/Shanghai", "Asia/Taipei","Asia/Urumqi","Australia/Adelaide", - "Australia/Adelaide","Australia/Broken Hill", - "Australia/Broken Hill","Australia/Darwin"], + "Australia/Adelaide","Australia/Broken_Hill", + "Australia/Broken_Hill","Australia/Darwin", + "Australia/North","Australia/South", + "Australia/South","Australia/Yancowinna", + "Australia/Yancowinna","CST6CDT","Canada/Central", + "Canada/East-Saskatchewan","Canada/Saskatchewan", + "Cuba","Mexico/General","PRC","ROC","US/Central", + "US/Indiana-Starke"], ["TJT","Asia/Dushanbe"], ["KRAT","Asia/Krasnoyarsk"], - ["MYT","Asia/Kuala Lumpur","Asia/Kuching"], + ["MYT","Asia/Kuala_Lumpur","Asia/Kuching"], ["SCT","Indian/Mahe"]], [["CEST","Africa/Ceuta","Arctic/Longyearbyen", - "Atlantic/Jan Mayen","Europe/Amsterdam", + "Atlantic/Jan_Mayen","CET","Europe/Amsterdam", "Europe/Andorra","Europe/Belgrade", "Europe/Berlin","Europe/Bratislava", "Europe/Brussels","Europe/Budapest", - "Europe/Copenhagen","Europe/Gibraltar", - "Europe/Ljubljana","Europe/Luxembourg", - "Europe/Madrid","Europe/Malta","Europe/Monaco", - "Europe/Oslo","Europe/Paris","Europe/Prague", - "Europe/Rome","Europe/San Marino", + "Europe/Busingen","Europe/Copenhagen", + "Europe/Gibraltar","Europe/Ljubljana", + "Europe/Luxembourg","Europe/Madrid", + "Europe/Malta","Europe/Monaco","Europe/Oslo", + "Europe/Paris","Europe/Podgorica","Europe/Prague", + "Europe/Rome","Europe/San_Marino", "Europe/Sarajevo","Europe/Skopje", "Europe/Stockholm","Europe/Tirane","Europe/Vaduz", "Europe/Vatican","Europe/Vienna","Europe/Warsaw", - "Europe/Zagreb","Europe/Zurich"], - ["PST","America/Dawson","America/Los Angeles", + "Europe/Zagreb","Europe/Zurich","Poland"], + ["PST","America/Dawson","America/Ensenada", + "America/Los_Angeles","America/Santa_Isabel", "America/Tijuana","America/Vancouver", - "America/Whitehorse","Pacific/Pitcairn"], + "America/Whitehorse","Canada/Pacific", + "Canada/Yukon","Mexico/BajaNorte","PST8PDT", + "Pacific/Pitcairn","US/Pacific"], ["SYOT","Antarctica/Syowa"], - ["ANAST","Asia/Anadyr"], - ["VLAT","Asia/Vladivostok"], + ["VLAT","Asia/Ust-Nera","Asia/Vladivostok"], ["CXT","Indian/Christmas"], ["TOT","Pacific/Tongatapu"]], [["AKDT","America/Anchorage","America/Juneau", - "America/Nome","America/Yakutat"], + "America/Nome","America/Sitka","America/Yakutat", + "US/Alaska"], ["GYT","America/Guyana"], ["PMST","America/Miquelon"], - ["WIT","Asia/Jakarta","Asia/Pontianak"], + ["WIT","Asia/Jayapura"], + ["GMT+9","Etc/GMT+9"], + ["UTC","Etc/UTC","Etc/Universal","Etc/Zulu","UTC", + "Universal","Zulu"], ["MART","Pacific/Marquesas"]], - [["SRT","America/Paramaribo"], + [["MeST","America/Metlakatla"], + ["SRT","America/Paramaribo"], ["MAWT","Antarctica/Mawson"], - ["ALMST","Asia/Almaty"], - ["JST","Asia/Tokyo"], - ["YAKT","Asia/Yakutsk"], + ["YAKT","Asia/Khandyga","Asia/Yakutsk"], + ["JST","Asia/Tokyo","Japan"], ["AZOST","Atlantic/Azores"], - ["MHT","Pacific/Kwajalein","Pacific/Majuro"]], - [["CLST","America/Santiago","Antarctica/Palmer"], - ["WST","Antarctica/Casey","Asia/Oral", - "Australia/Perth","Pacific/Apia"], + ["GMT+6","Etc/GMT+6"], + ["MHT","Kwajalein","Pacific/Kwajalein", + "Pacific/Majuro"], + ["MEST","MET"]], + [["CLST","America/Santiago","Antarctica/Palmer", + "Chile/Continental"], + ["WST","Antarctica/Casey","Australia/Perth", + "Australia/West","Pacific/Apia"], ["MMT","Asia/Rangoon"], - ["ULAT","Asia/Ulaanbaatar"], - ["YAPT","Pacific/Yap"]], - [["AKST","America/Anchorage","America/Juneau", - "America/Nome","America/Yakutat"], - ["BRST","America/Araguaina","America/Fortaleza", - "America/Maceio","America/Recife", - "America/Sao Paulo"], - ["CLT","America/Santiago","Antarctica/Palmer"], + ["ULAT","Asia/Ulaanbaatar","Asia/Ulan_Bator"], + ["GMT+3","Etc/GMT+3"]], + [["WEST","Africa/Casablanca","Africa/El_Aaiun", + "Atlantic/Canary","Atlantic/Faeroe", + "Atlantic/Faroe","Atlantic/Madeira", + "Europe/Lisbon","Portugal","WET"], + ["AKST","America/Anchorage","America/Juneau", + "America/Nome","America/Sitka","America/Yakutat", + "US/Alaska"], + ["CLT","America/Santiago","Antarctica/Palmer", + "Chile/Continental"], + ["BRST","America/Sao_Paulo","Brazil/East"], ["EGST","America/Scoresbysund"], - ["LKT","Asia/Colombo"], ["OMST","Asia/Omsk"], - ["WEST","Atlantic/Canary","Atlantic/Faeroe", - "Atlantic/Madeira","Europe/Lisbon"], - ["PGT","Pacific/Port Moresby"]], + ["PGT","Pacific/Port_Moresby"]], [["GMT","Africa/Abidjan","Africa/Accra", "Africa/Bamako","Africa/Banjul","Africa/Bissau", "Africa/Conakry","Africa/Dakar","Africa/Freetown", "Africa/Lome","Africa/Monrovia", "Africa/Nouakchott","Africa/Ouagadougou", - "Africa/Sao Tome","Africa/Timbuktu", + "Africa/Sao_Tome","Africa/Timbuktu", "America/Danmarkshavn","Atlantic/Reykjavik", - "Atlantic/St Helena","Europe/Belfast", - "Europe/Dublin","Europe/London"], - ["ACT","America/Eirunepe","America/Rio Branco"], + "Atlantic/St_Helena","Eire","Etc/GMT","Etc/GMT+0", + "Etc/GMT-0","Etc/GMT0","Etc/Greenwich", + "Europe/Belfast","Europe/Dublin", + "Europe/Guernsey","Europe/Isle_of_Man", + "Europe/Jersey","Europe/London","GB","GB-Eire", + "GMT","GMT+0","GMT-0","GMT0","Greenwich", + "Iceland"], + ["ACT","America/Eirunepe","America/Porto_Acre", + "America/Rio_Branco","Brazil/Acre"], ["NZDT","Antarctica/McMurdo", - "Antarctica/South Pole","Pacific/Auckland"], + "Antarctica/South_Pole","NZ","Pacific/Auckland"], ["GALT","Pacific/Galapagos"]], - [["EDT","America/Detroit","America/Grand Turk", + [["EDT","America/Detroit","America/Fort_Wayne", + "America/Grand_Turk", + "America/Indiana/Indianapolis", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac","America/Indianapolis", "America/Iqaluit","America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Louisville","America/Montreal", - "America/Nassau","America/New York", + "America/Nassau","America/New_York", "America/Nipigon","America/Pangnirtung", - "America/Thunder Bay"], - ["BOT","America/La Paz"], - ["TMT","Asia/Ashgabat"], + "America/Port-au-Prince","America/Thunder_Bay", + "America/Toronto","Canada/Eastern","EST5EDT", + "US/East-Indiana","US/Eastern","US/Michigan"], + ["BOT","America/La_Paz"], + ["TMT","Asia/Ashgabat","Asia/Ashkhabad"], ["PETT","Asia/Kamchatka"], - ["CVT","Atlantic/Cape Verde"], - ["FKT","Atlantic/Stanley"], - ["EAST","Pacific/Easter"], + ["CVT","Atlantic/Cape_Verde"], + ["EAST","Chile/EasterIsland","Pacific/Easter"], + ["GMT-8","Etc/GMT-8"], ["NCT","Pacific/Noumea"]], - [["AMT","America/Boa Vista","America/Cuiaba", - "America/Manaus","America/Porto Velho", - "Asia/Yerevan"], + [["AMT","America/Boa_Vista","America/Campo_Grande", + "America/Cuiaba","America/Manaus", + "America/Porto_Velho","Asia/Yerevan", + "Brazil/West"], ["WGT","America/Godthab"], ["UYT","America/Montevideo"], ["IRKT","Asia/Irkutsk"], - ["EIT","Asia/Jayapura"], - ["KST","Asia/Pyongyang","Asia/Qyzylorda", - "Asia/Seoul"], - ["BTT","Asia/Thimphu"]], - [["ART","America/Buenos Aires","America/Catamarca", + ["WIB","Asia/Jakarta","Asia/Pontianak"], + ["KST","Asia/Pyongyang","Asia/Seoul","ROK"], + ["BTT","Asia/Thimbu","Asia/Thimphu"], + ["GMT-14","Etc/GMT-14"], + ["GMT-5","Etc/GMT-5"], + ["WSDT","Pacific/Apia"]], + [["ART","America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Buenos_Aires","America/Catamarca", "America/Cordoba","America/Jujuy", "America/Mendoza","America/Rosario"], ["VET","America/Caracas"], ["NZST","Antarctica/McMurdo", - "Antarctica/South Pole","Pacific/Auckland"], - ["TRUT","Pacific/Truk"], + "Antarctica/South_Pole","NZ","Pacific/Auckland"], + ["GMT-11","Etc/GMT-11"], + ["GMT-2","Etc/GMT-2"], ["WAKT","Pacific/Wake"]], [["CET","Africa/Algiers","Africa/Ceuta", "Africa/Tunis","Arctic/Longyearbyen", - "Atlantic/Jan Mayen","Europe/Amsterdam", + "Atlantic/Jan_Mayen","CET","Europe/Amsterdam", "Europe/Andorra","Europe/Belgrade", "Europe/Berlin","Europe/Bratislava", "Europe/Brussels","Europe/Budapest", - "Europe/Copenhagen","Europe/Gibraltar", - "Europe/Ljubljana","Europe/Luxembourg", - "Europe/Madrid","Europe/Malta","Europe/Monaco", - "Europe/Oslo","Europe/Paris","Europe/Prague", - "Europe/Rome","Europe/San Marino", + "Europe/Busingen","Europe/Copenhagen", + "Europe/Gibraltar","Europe/Ljubljana", + "Europe/Luxembourg","Europe/Madrid", + "Europe/Malta","Europe/Monaco","Europe/Oslo", + "Europe/Paris","Europe/Podgorica","Europe/Prague", + "Europe/Rome","Europe/San_Marino", "Europe/Sarajevo","Europe/Skopje", "Europe/Stockholm","Europe/Tirane","Europe/Vaduz", "Europe/Vatican","Europe/Vienna","Europe/Warsaw", - "Europe/Zagreb","Europe/Zurich"], - ["EST","America/Cayman","America/Detroit", - "America/Grand Turk", + "Europe/Zagreb","Europe/Zurich","Poland"], + ["EST","America/Atikokan","America/Cayman", + "America/Coral_Harbour","America/Detroit", + "America/Fort_Wayne","America/Grand_Turk", "America/Indiana/Indianapolis", - "America/Indiana/Knox","America/Indiana/Marengo", - "America/Indiana/Vevay","America/Indianapolis", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac","America/Indianapolis", "America/Iqaluit","America/Jamaica", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Louisville","America/Montreal", - "America/Nassau","America/New York", + "America/Nassau","America/New_York", "America/Nipigon","America/Panama", "America/Pangnirtung","America/Port-au-Prince", - "America/Thunder Bay","Australia/Brisbane", - "Australia/Hobart","Australia/Hobart", - "Australia/Lindeman","Australia/Melbourne", - "Australia/Melbourne","Australia/Sydney", - "Australia/Sydney"], + "America/Thunder_Bay","America/Toronto", + "Australia/ACT","Australia/ACT", + "Australia/Brisbane","Australia/Canberra", + "Australia/Canberra","Australia/Currie", + "Australia/Currie","Australia/Hobart", + "Australia/Hobart","Australia/Lindeman", + "Australia/Melbourne","Australia/Melbourne", + "Australia/NSW","Australia/NSW", + "Australia/Queensland","Australia/Sydney", + "Australia/Sydney","Australia/Tasmania", + "Australia/Tasmania","Australia/Victoria", + "Australia/Victoria","Canada/Eastern","EST", + "EST5EDT","Jamaica","US/East-Indiana", + "US/Eastern","US/Michigan"], ["ANAT","Asia/Anadyr"], + ["GMT+10","Etc/GMT+10"], + ["UCT","Etc/UCT","UCT"], ["IOT","Indian/Chagos"], + ["CHUT","Pacific/Chuuk","Pacific/Truk", + "Pacific/Yap"], ["NRT","Pacific/Nauru"]], [["GFT","America/Cayenne"], ["PET","America/Lima"], ["HOVT","Asia/Hovd"], - ["PONT","Pacific/Ponape"], + ["PONT","Pacific/Pohnpei","Pacific/Ponape"], ["TAHT","Pacific/Tahiti"]], [["COT","America/Bogota"], ["KGT","Asia/Bishkek"], ["TFT","Indian/Kerguelen"], ["MUT","Indian/Mauritius"]], - [["AFT","Asia/Kabul"],["TKT","Pacific/Fakaofo"]], - [["WET","Africa/Casablanca","Africa/El Aaiun", + [["AFT","Asia/Kabul"], + ["IRDT","Asia/Tehran","Iran"], + ["GMT+8","Etc/GMT+8"], + ["TKT","Pacific/Fakaofo"]], + [["WET","Africa/Casablanca","Africa/El_Aaiun", "Atlantic/Canary","Atlantic/Faeroe", - "Atlantic/Madeira","Europe/Lisbon"], - ["BRT","America/Araguaina","America/Belem", - "America/Fortaleza","America/Maceio", - "America/Recife","America/Sao Paulo"], - ["FNT","America/Noronha"], + "Atlantic/Faroe","Atlantic/Madeira", + "Europe/Lisbon","Portugal","WET"], + ["BRT","America/Araguaina","America/Bahia", + "America/Belem","America/Fortaleza", + "America/Maceio","America/Recife", + "America/Santarem","America/Sao_Paulo", + "Brazil/East"], + ["FNT","America/Noronha","Brazil/DeNoronha"], ["EGT","America/Scoresbysund"], - ["ICT","Asia/Bangkok","Asia/Phnom Penh", - "Asia/Saigon","Asia/Vientiane"], - ["TPT","Asia/Dili"], + ["ICT","Asia/Bangkok","Asia/Ho_Chi_Minh", + "Asia/Phnom_Penh","Asia/Saigon","Asia/Vientiane"], + ["GMT+5","Etc/GMT+5"], ["NFT","Pacific/Norfolk"], ["GILT","Pacific/Tarawa"]]}, {[["PYT","America/Asuncion"], - ["MDT","America/Boise","America/Cambridge Bay", + ["MDT","America/Boise","America/Cambridge_Bay", "America/Chihuahua","America/Denver", "America/Edmonton","America/Inuvik", - "America/Mazatlan","America/Shiprock", - "America/Yellowknife"], - ["AMST","America/Cuiaba","Asia/Yerevan"], + "America/Mazatlan","America/Ojinaga", + "America/Shiprock","America/Yellowknife", + "Canada/Mountain","MST7MDT","Mexico/BajaSur", + "Navajo","US/Mountain"], + ["AMST","America/Campo_Grande","America/Cuiaba"], + ["UYST","America/Montevideo"], ["SAMT","Europe/Samara"]], - [],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + [["AQTT","Asia/Aqtau","Asia/Aqtobe"], + ["AZST","Asia/Baku"], + ["IRST","Asia/Tehran","Iran"], + ["ChST","Pacific/Guam","Pacific/Saipan"], + ["SST","Pacific/Midway","Pacific/Pago_Pago", + "Pacific/Samoa","US/Samoa"]], + [["WAST","Africa/Windhoek"], + ["FJST","Pacific/Fiji"], + ["NUT","Pacific/Niue"]], + [["PHT","Asia/Manila"]], + [["ADT","America/Glace_Bay","America/Goose_Bay", + "America/Halifax","America/Moncton", + "America/Thule","Atlantic/Bermuda", + "Canada/Atlantic"], + ["DDUT","Antarctica/DumontDUrville"], + ["MAGT","Asia/Magadan"], + ["SBT","Pacific/Guadalcanal"]], + [["EET","Africa/Cairo","Africa/Tripoli", + "Asia/Amman","Asia/Beirut","Asia/Damascus", + "Asia/Gaza","Asia/Hebron","Asia/Istanbul", + "Asia/Nicosia","EET","Egypt","Europe/Athens", + "Europe/Bucharest","Europe/Chisinau", + "Europe/Helsinki","Europe/Istanbul","Europe/Kiev", + "Europe/Mariehamn","Europe/Nicosia","Europe/Riga", + "Europe/Simferopol","Europe/Sofia", + "Europe/Tallinn","Europe/Tiraspol", + "Europe/Uzhgorod","Europe/Vilnius", + "Europe/Zaporozhye","Libya","Turkey"], + ["NDT","America/St_Johns","Canada/Newfoundland"], + ["GST","Asia/Dubai","Asia/Muscat", + "Atlantic/South_Georgia"], + ["ORAT","Asia/Oral"], + ["GMT+12","Etc/GMT+12"]], + [["UZT","Asia/Samarkand","Asia/Tashkent"], + ["RET","Indian/Reunion"]], + [["CAT","Africa/Blantyre","Africa/Bujumbura", + "Africa/Gaborone","Africa/Harare","Africa/Kigali", + "Africa/Lubumbashi","Africa/Lusaka", + "Africa/Maputo"], + ["QYZT","Asia/Qyzylorda"], + ["FKST","Atlantic/Stanley"]], + [],[],[],[],[],[],[],[]}, {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}). \ No newline at end of file From 039cb88a9ba530f2d3300574c22cbb1d61d5ffc2 Mon Sep 17 00:00:00 2001 From: David Hull Date: Fri, 10 Jan 2014 01:47:05 +0000 Subject: [PATCH 5/5] Add more localtime_dst tests. Some of these tests are currently failing. --- src/localtime_dst.erl | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/localtime_dst.erl b/src/localtime_dst.erl index 10b91f2..5b6a70c 100644 --- a/src/localtime_dst.erl +++ b/src/localtime_dst.erl @@ -158,5 +158,46 @@ check_test() -> ?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 10, 0}}, Tz)), ?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 30, 0}}, Tz)), ?assertEqual(ambiguous_time, check({{2010, 10, 31}, {2, 59, 0}}, Tz)), - ?assertEqual(is_not_in_dst, check({{2010, 10, 31}, {3, 00, 0}}, Tz)). + ?assertEqual(is_not_in_dst, check({{2010, 10, 31}, {3, 00, 0}}, Tz)), + + %% DST starts at hour 24; DST ends at hour 0: + TzGaza = {"Asia/Gaza",{"EET","EET"},{"EEST","EEST"},120,60,{last,thu,mar},{24,0},{4,fri,sep},{0,0}}, + ?assertEqual(is_not_in_dst, check({{2014, 3, 27}, {23, 59, 59}}, TzGaza)), + %% Currently ST->DT transitions in the last hour of the day are not handled correctly. + %?assertEqual(time_not_exists, check({{2014, 3, 28}, { 0, 00, 00}}, TzGaza)), + %?assertEqual(time_not_exists, check({{2014, 3, 28}, { 0, 59, 59}}, TzGaza)), + ?assertEqual(is_in_dst, check({{2014, 3, 28}, { 0, 59, 59}}, TzGaza)), % WRONG + ?assertEqual(is_in_dst, check({{2014, 3, 28}, { 1, 00, 00}}, TzGaza)), + ?assertEqual(is_in_dst, check({{2014, 9, 25}, {22, 59, 59}}, TzGaza)), + %% Currently DT->ST transitions in the first hour of the day are not handled correctly. + %?assertEqual(ambiguous_time, check({{2014, 9, 25}, {23, 00, 00}}, TzGaza)), + %?assertEqual(ambiguous_time, check({{2014, 9, 25}, {23, 59, 59}}, TzGaza)), + ?assertEqual(is_in_dst, check({{2014, 9, 25}, {23, 59, 59}}, TzGaza)), % WRONG + ?assertEqual(is_not_in_dst, check({{2014, 9, 26}, { 0, 00, 00}}, TzGaza)), + + %% DST starts at hour 0; DST ends at hour 0. + TzDamascus = {"Asia/Damascus",{"EET","EET"},{"EEST","EEST"},120,60,{last,fri,mar},{0,0},{last,fri,oct},{0,0}}, + ?assertEqual(is_not_in_dst, check({{2014, 3, 27}, {23, 59, 59}}, TzDamascus)), + ?assertEqual(time_not_exists, check({{2014, 3, 28}, { 0, 00, 00}}, TzDamascus)), + ?assertEqual(time_not_exists, check({{2014, 3, 28}, { 0, 59, 59}}, TzDamascus)), + ?assertEqual(is_in_dst, check({{2014, 3, 28}, { 1, 00, 00}}, TzDamascus)), + ?assertEqual(is_in_dst, check({{2014, 10, 30}, {22, 59, 59}}, TzDamascus)), + %% Currently DT->ST transitions in the first hour of the day are not handled correctly. + %?assertEqual(ambiguous_time, check({{2014, 10, 30}, {23, 00, 00}}, TzDamascus)), + %?assertEqual(ambiguous_time, check({{2014, 10, 30}, {23, 59, 59}}, TzDamascus)), + ?assertEqual(is_not_in_dst, check({{2014, 10, 31}, { 0, 00, 00}}, TzDamascus)), + + %% DST ends before starts (southern hemisphere): + TzMontevideo = {"America/Montevideo",{"UYT","UYT"},{"UYST","UYST"},-180,60,{1,sun,oct},{2,0},{2,sun,mar},{2,0}}, + ?assertEqual(is_in_dst, check({{2014, 3, 09}, { 0, 59, 59}}, TzMontevideo)), + ?assertEqual(ambiguous_time, check({{2014, 3, 09}, { 1, 00, 00}}, TzMontevideo)), + ?assertEqual(ambiguous_time, check({{2014, 3, 09}, { 1, 59, 59}}, TzMontevideo)), + ?assertEqual(is_not_in_dst, check({{2014, 3, 09}, { 2, 00, 00}}, TzMontevideo)), + ?assertEqual(is_not_in_dst, check({{2014, 10, 05}, { 1, 59, 59}}, TzMontevideo)), + ?assertEqual(time_not_exists, check({{2014, 10, 05}, { 2, 00, 00}}, TzMontevideo)), + ?assertEqual(time_not_exists, check({{2014, 10, 05}, { 2, 59, 59}}, TzMontevideo)), + ?assertEqual(is_in_dst, check({{2014, 10, 05}, { 3, 00, 00}}, TzMontevideo)), + + true. + -endif.