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