diff --git a/README b/README index 4284745..f920580 100644 --- a/README +++ b/README @@ -5,6 +5,7 @@ This library contains next public exported methods: * local_to_local(DateTime, TimezoneFrom, TimezoneTo) - converts local time to local * tz_name(DateTime, Timezone) - returns a timezone name (E.g. MSK, MSD, etc) * tz_shift(DateTime, Timezone) - returns shift from local datetime to GMT +* tz_shift(DateTime, TimezoneFrom, TimezoneTo) - returns shift from local datetime to required timezone Where DateTime = {date(), time()} TimeZone(To, From) = String(). E.g. “Europe/Moscow”, “America/NewYork”. Or abbreviation "MSK", "MSD", etc. Note: diff --git a/include/tz_database.hrl b/include/tz_database.hrl index e9f441b..3aabccc 100644 --- a/include/tz_database.hrl +++ b/include/tz_database.hrl @@ -16,7 +16,7 @@ -author("Dmitry Melnikov "). -% {TimeZoneName, {StdAbbr, StdName}, {DstAbbr, DstName}, StdMin, DstMin, DstStartDay, DstStartTime, DstEndDay, DstEndTime} +% {TimeZoneName, {StdAbbr, StdName}, {DstAbbr, DstName}, StdMin, DstMin, DstStartDay, DstStartTime, DstEndDay, DstEndTime} % TimeZoneName = String(), TimeZone name, MUST be unique. It is a key % StdName = {String(), String()}, name and abbreviations of timezone before daylight shift % DstName = {String(), String()}, name and abbreviations of timezone after daylight shift @@ -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"},{"IRKST","IRKST"},480,60,{last,sun,mar},{2,0},{last,sun,oct},{3,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"},{"KRAST","KRAST"},420,60,{last,sun,mar},{2,0},{last,sun,oct},{3,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,7 +267,7 @@ {"Asia/Novosibirsk",{"NOVT","NOVT"},{"NOVST","NOVST"},360,60,{last,sun,mar},{2,0},{last,sun,oct},{3,0}}, {"Asia/Omsk",{"OMST","OMST"},{"OMSST","OMSST"},360,60,{last,sun,mar},{2,0},{last,sun,oct},{3,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}}, @@ -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"},{"SAMST","SAMST"},240,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/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/include/tz_index.hrl b/include/tz_index.hrl index e21752d..eba88fa 100644 --- a/include/tz_index.hrl +++ b/include/tz_index.hrl @@ -4,16 +4,16 @@ [["NPT","Asia/Katmandu"],["CCT","Indian/Cocos"]], [["DAVT","Antarctica/Davis"], ["AZT","Asia/Baku"], - ["HKT","Asia/Hong_Kong"], + ["HKT","Asia/Hong Kong"], ["IRT","Asia/Tehran"]], - [["MST","America/Boise","America/Cambridge_Bay", - "America/Chihuahua","America/Dawson_Creek", + [["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"], ["YAKST","Asia/Yakutsk"]], - [["ADT","America/Glace_Bay","America/Goose_Bay", + [["ADT","America/Glace Bay","America/Goose Bay", "America/Halifax","Asia/Baghdad", "Atlantic/Bermuda"], ["DDUT","Antarctica/DumontDUrville"], @@ -31,16 +31,16 @@ "Europe/Riga","Europe/Simferopol","Europe/Sofia", "Europe/Tallinn","Europe/Uzhgorod", "Europe/Vilnius","Europe/Zaporozhye"], - ["NDT","America/St_Johns"], + ["NDT","America/St Johns"], ["GST","Asia/Dubai","Asia/Muscat", - "Atlantic/South_Georgia"], + "Atlantic/South Georgia"], ["SAKST","Asia/Sakhalin"], ["SGT","Asia/Singapore"]], [["SAKT","Asia/Sakhalin"], ["UZT","Asia/Samarkand","Asia/Tashkent"], ["GEST","Asia/Tbilisi"], - ["LHST","Australia/Lord_Howe", - "Australia/Lord_Howe"], + ["LHST","Australia/Lord Howe", + "Australia/Lord Howe"], ["MSK","Europe/Moscow"], ["RET","Indian/Reunion"], ["PHOT","Pacific/Enderbury"], @@ -52,20 +52,20 @@ ["AST","America/Anguilla","America/Antigua", "America/Aruba","America/Barbados", "America/Curacao","America/Dominica", - "America/Glace_Bay","America/Goose_Bay", + "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/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"], ["PETST","Asia/Kamchatka"], ["FKST","Atlantic/Stanley"], ["EASST","Pacific/Easter"]], - [["NST","America/St_Johns"], + [["NST","America/St Johns"], ["AQTST","Asia/Aqtau","Asia/Aqtobe"], ["YEKT","Asia/Yekaterinburg"]], [["BDT","Asia/Dhaka"], @@ -108,50 +108,50 @@ "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/Merida","America/Mexico City", + "America/Monterrey","America/North Dakota/Center", + "America/Rainy River","America/Rankin Inlet", "America/Winnipeg"], ["CHAST","Pacific/Chatham"]], [["HAST","America/Adak"], ["PYST","America/Asuncion"], - ["PDT","America/Dawson","America/Los_Angeles", + ["PDT","America/Dawson","America/Los Angeles", "America/Tijuana","America/Vancouver", "America/Whitehorse"], ["IST","Asia/Calcutta","Asia/Jerusalem", "Europe/Dublin"], - ["CIT","Asia/Makassar","Asia/Ujung_Pandang"], + ["CIT","Asia/Makassar","Asia/Ujung Pandang"], ["GET","Asia/Tbilisi"], ["SAMST","Europe/Samara"]]}, {[["PMDT","America/Miquelon"]], - [["EAT","Africa/Addis_Ababa","Africa/Asmera", - "Africa/Dar_es_Salaam","Africa/Djibouti", + [["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/Chicago","America/Costa Rica", + "America/El Salvador","America/Guatemala", "America/Havana","America/Managua", "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/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", "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"], ["TJT","Asia/Dushanbe"], ["KRAT","Asia/Krasnoyarsk"], - ["MYT","Asia/Kuala_Lumpur","Asia/Kuching"], + ["MYT","Asia/Kuala Lumpur","Asia/Kuching"], ["VLAST","Asia/Vladivostok"], ["SCT","Indian/Mahe"]], [["CEST","Africa/Ceuta","Arctic/Longyearbyen", - "Atlantic/Jan_Mayen","Europe/Amsterdam", + "Atlantic/Jan Mayen","Europe/Amsterdam", "Europe/Andorra","Europe/Belgrade", "Europe/Berlin","Europe/Bratislava", "Europe/Brussels","Europe/Budapest", @@ -159,12 +159,12 @@ "Europe/Ljubljana","Europe/Luxembourg", "Europe/Madrid","Europe/Malta","Europe/Monaco", "Europe/Oslo","Europe/Paris","Europe/Prague", - "Europe/Rome","Europe/San_Marino", + "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", + ["PST","America/Dawson","America/Los Angeles", "America/Tijuana","America/Vancouver", "America/Whitehorse","Pacific/Pitcairn"], ["SYOT","Antarctica/Syowa"], @@ -198,45 +198,45 @@ "America/Nome","America/Yakutat"], ["BRST","America/Araguaina","America/Fortaleza", "America/Maceio","America/Recife", - "America/Sao_Paulo"], + "America/Sao Paulo"], ["CLT","America/Santiago","Antarctica/Palmer"], ["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", + "Atlantic/St Helena","Europe/Belfast", "Europe/Dublin","Europe/London"], - ["ACT","America/Eirunepe","America/Rio_Branco"], + ["ACT","America/Eirunepe","America/Rio Branco"], ["NZDT","Antarctica/McMurdo", - "Antarctica/South_Pole","Pacific/Auckland"], + "Antarctica/South Pole","Pacific/Auckland"], ["YEKST","Asia/Yekaterinburg"], ["GALT","Pacific/Galapagos"]], - [["EDT","America/Detroit","America/Grand_Turk", + [["EDT","America/Detroit","America/Grand Turk", "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"], + "America/Thunder Bay"], + ["BOT","America/La Paz"], ["TMT","Asia/Ashgabat"], ["PETT","Asia/Kamchatka"], ["KRAST","Asia/Krasnoyarsk"], - ["CVT","Atlantic/Cape_Verde"], + ["CVT","Atlantic/Cape Verde"], ["FKT","Atlantic/Stanley"], ["EAST","Pacific/Easter"], ["NCT","Pacific/Noumea"]], - [["AMT","America/Boa_Vista","America/Cuiaba", - "America/Manaus","America/Porto_Velho", + [["AMT","America/Boa Vista","America/Cuiaba", + "America/Manaus","America/Porto Velho", "Asia/Yerevan"], ["WGT","America/Godthab"], ["UYT","America/Montevideo"], @@ -245,17 +245,17 @@ ["KST","Asia/Pyongyang","Asia/Qyzylorda", "Asia/Seoul"], ["BTT","Asia/Thimphu"]], - [["ART","America/Buenos_Aires","America/Catamarca", + [["ART","America/Buenos Aires","America/Catamarca", "America/Cordoba","America/Jujuy", "America/Mendoza","America/Rosario"], ["VET","America/Caracas"], ["NZST","Antarctica/McMurdo", - "Antarctica/South_Pole","Pacific/Auckland"], + "Antarctica/South Pole","Pacific/Auckland"], ["TRUT","Pacific/Truk"], ["WAKT","Pacific/Wake"]], [["CET","Africa/Algiers","Africa/Ceuta", "Africa/Tunis","Arctic/Longyearbyen", - "Atlantic/Jan_Mayen","Europe/Amsterdam", + "Atlantic/Jan Mayen","Europe/Amsterdam", "Europe/Andorra","Europe/Belgrade", "Europe/Berlin","Europe/Bratislava", "Europe/Brussels","Europe/Budapest", @@ -263,13 +263,13 @@ "Europe/Ljubljana","Europe/Luxembourg", "Europe/Madrid","Europe/Malta","Europe/Monaco", "Europe/Oslo","Europe/Paris","Europe/Prague", - "Europe/Rome","Europe/San_Marino", + "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", + "America/Grand Turk", "America/Indiana/Indianapolis", "America/Indiana/Knox","America/Indiana/Marengo", "America/Indiana/Vevay","America/Indianapolis", @@ -277,10 +277,10 @@ "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", + "America/Thunder Bay","Australia/Brisbane", "Australia/Hobart","Australia/Hobart", "Australia/Lindeman","Australia/Melbourne", "Australia/Melbourne","Australia/Sydney", @@ -298,21 +298,21 @@ ["TFT","Indian/Kerguelen"], ["MUT","Indian/Mauritius"]], [["AFT","Asia/Kabul"],["TKT","Pacific/Fakaofo"]], - [["WET","Africa/Casablanca","Africa/El_Aaiun", + [["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"], + "America/Recife","America/Sao Paulo"], ["FNT","America/Noronha"], ["EGT","America/Scoresbysund"], - ["ICT","Asia/Bangkok","Asia/Phnom_Penh", + ["ICT","Asia/Bangkok","Asia/Phnom Penh", "Asia/Saigon","Asia/Vientiane"], ["TPT","Asia/Dili"], ["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", @@ -323,8 +323,8 @@ [["AQTT","Asia/Aqtau","Asia/Aqtobe"], ["AZST","Asia/Baku"], ["ChST","Pacific/Guam","Pacific/Saipan"], - ["SST","Pacific/Midway","Pacific/Pago_Pago"]], + ["SST","Pacific/Midway","Pacific/Pago Pago"]], [["WAST","Africa/Windhoek"],["NUT","Pacific/Niue"]], [["PHT","Asia/Manila"]], [],[],[],[],[],[],[],[],[],[],[],[]}, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}). \ No newline at end of file + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}). diff --git a/src/localtime.erl b/src/localtime.erl index f45a660..f9fc0fa 100644 --- a/src/localtime.erl +++ b/src/localtime.erl @@ -27,6 +27,7 @@ ,local_to_local/3 ,tz_name/2 ,tz_shift/2 + ,tz_shift/3 ]). % utc_to_local(UtcDateTime, Timezone) -> LocalDateTime | {error, ErrDescr} @@ -138,7 +139,7 @@ tz_shift(LocalDateTime, Timezone) -> false -> {error, unknown_tz}; {_Tz, _StdName, undef, Shift, _DstShift, undef, _DstStartTime, undef, _DstEndTime} -> - Shift; + fmt_min(Shift); TzRule = {_, _StdName, _DstName, Shift, DstShift, _, _, _, _} -> case localtime_dst:check(LocalDateTime, TzRule) of is_in_dst -> @@ -152,6 +153,12 @@ tz_shift(LocalDateTime, Timezone) -> end end. +tz_shift(LocalDateTime, TimezoneFrom, TimezoneTo) -> + FromShift = fmt_shift(tz_shift(LocalDateTime, TimezoneFrom)), + DateTimeTo = localtime:local_to_local(LocalDateTime, TimezoneFrom, TimezoneTo), + ToShift = fmt_shift(tz_shift(DateTimeTo, TimezoneTo)), + fmt_min(ToShift-FromShift). + adjust_datetime(DateTime, Minutes) -> Seconds = calendar:datetime_to_gregorian_seconds(DateTime) + Minutes * 60, calendar:gregorian_seconds_to_datetime(Seconds). @@ -164,6 +171,11 @@ fmt_min(Shift) when Shift < 0 -> fmt_min(Shift) -> {'+', Shift div 60, Shift rem 60}. +fmt_shift({'+', H, M}) -> + H * 60 + M; +fmt_shift({'-', H, M}) -> + -(H * 60 + M). + get_timezone(TimeZone) -> case dict:find(TimeZone, ?tz_index) of error ->