[tz] Time zone selection
Arthur David Olson
arthurdavidolson at gmail.com
Fri Apr 22 00:20:55 UTC 2016
> I'm somewhat inclined to add one more hand-maintained table, zone-now.tab,
> which is like zone-1970.tab except using a cutoff of "now"...
Since time zone version 2 files end with POSIX-style strings, it may be
possible to automate the generation of zone-now.tab from zone-1970.tab:
slurp the lines of zone-1970.tab
for each line describes a zone, get the associated POSIX-style string
output each zone-1970.tab line, except for the second and subsequent
lines associated with a particular POSIX-style string.
This would undoubtedly lead to some unwanted mergers, so an exception
mechanism (presumably in the form of magic zone-1970.tab comments) would be
needed.
As a start, here's a script that runs through a time zone binary directory
and tells which files are associated with which POSIX-style strings:
#!/bin/perl
if ($#ARGV != 0) {
die("$0: usage is $0 dir");
}
$dir = $ARGV[0];
chdir ($dir) || die("cannot chdir $dir");
for (`find * -type f`) {
s@[\r\n]@@;
$zone = $_;
open(S, "<$_") || next;
if (<S> =~ /^TZif2/) {
$last = "";
while (<S>) {
$posix = $_;
}
$posix =~ s@[\r\n]@@;
if ($zones{$posix} ne "") {
$zones{$posix} .= " ";
}
$zones{$posix} .= $zone;
++$counts{$posix};
}
close(S);
}
for $posix (sort keys %zones) {
print "\"$posix\"\t$counts{$posix}\t$zones{$posix}\r\n";
}
Below find the resullts of the above applied to a recent time zone binary
directory.
@dashdashado
"<+04>-4" 2 Europe/Astrakhan Europe/Ulyanovsk
"<+07>-7" 1 Asia/Barnaul
"<GMT+10>10" 1 Etc/GMT+10
"<GMT+11>11" 1 Etc/GMT+11
"<GMT+12>12" 1 Etc/GMT+12
"<GMT+1>1" 1 Etc/GMT+1
"<GMT+2>2" 1 Etc/GMT+2
"<GMT+3>3" 1 Etc/GMT+3
"<GMT+4>4" 1 Etc/GMT+4
"<GMT+5>5" 1 Etc/GMT+5
"<GMT+6>6" 1 Etc/GMT+6
"<GMT+7>7" 1 Etc/GMT+7
"<GMT+8>8" 1 Etc/GMT+8
"<GMT+9>9" 1 Etc/GMT+9
"<GMT-10>-10" 1 Etc/GMT-10
"<GMT-11>-11" 1 Etc/GMT-11
"<GMT-12>-12" 1 Etc/GMT-12
"<GMT-13>-13" 1 Etc/GMT-13
"<GMT-14>-14" 1 Etc/GMT-14
"<GMT-1>-1" 1 Etc/GMT-1
"<GMT-2>-2" 1 Etc/GMT-2
"<GMT-3>-3" 1 Etc/GMT-3
"<GMT-4>-4" 1 Etc/GMT-4
"<GMT-5>-5" 1 Etc/GMT-5
"<GMT-6>-6" 1 Etc/GMT-6
"<GMT-7>-7" 1 Etc/GMT-7
"<GMT-8>-8" 1 Etc/GMT-8
"<GMT-9>-9" 1 Etc/GMT-9
"<Local time zone must be set--see zic manual page>0" 1 Factory
"ACST-9:30" 2 Australia/Darwin Australia/North
"ACST-9:30ACDT,M10.1.0,M4.1.0/3" 4 Australia/Adelaide
Australia/Broken_Hill Australia/South Australia/Yancowinna
"ACT5" 4 America/Eirunepe America/Porto_Acre America/Rio_Branco
Brazil/Acre
"ACWST-8:45" 1 Australia/Eucla
"AEST-10" 3 Australia/Brisbane Australia/Lindeman Australia/Queensland
"AEST-10AEDT,M10.1.0,M4.1.0/3" 9 Australia/ACT Australia/Canberra
Australia/Currie Australia/Hobart Australia/Melbourne Australia/NSW
Australia/Sydney Australia/Tasmania Australia/Victoria
"AFT-4:30" 1 Asia/Kabul
"AKST9AKDT,M3.2.0,M11.1.0" 7 America/Anchorage America/Juneau
America/Metlakatla America/Nome America/Sitka America/Yakutat US/Alaska
"ALMT-6" 1 Asia/Almaty
"AMT-4" 1 Asia/Yerevan
"AMT4" 4 America/Boa_Vista America/Manaus America/Porto_Velho
Brazil/West
"AMT4AMST,M10.3.0/0,M2.3.0/0" 2 America/Campo_Grande America/Cuiaba
"ANAT-12" 1 Asia/Anadyr
"AQTT-5" 2 Asia/Aqtau Asia/Aqtobe
"ART3" 19 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
"AST-3" 6 Asia/Aden Asia/Baghdad Asia/Bahrain Asia/Kuwait Asia/Qatar
Asia/Riyadh
"AST4" 25 America/Anguilla America/Antigua America/Aruba
America/Barbados America/Blanc-Sablon America/Curacao America/Dominica
America/Grand_Turk America/Grenada America/Guadeloupe America/Kralendijk
America/Lower_Princes America/Marigot America/Martinique 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/Tortola America/Virgin
"AST4ADT,M3.2.0,M11.1.0" 7 America/Glace_Bay America/Goose_Bay
America/Halifax America/Moncton America/Thule Atlantic/Bermuda
Canada/Atlantic
"AWST-8" 3 Antarctica/Casey Australia/Perth Australia/West
"AZOT1AZOST,M3.5.0/0,M10.5.0/1" 1 Atlantic/Azores
"AZT-4AZST,M3.5.0/4,M10.5.0/5" 1 Asia/Baku
"BDT-6" 2 Asia/Dacca Asia/Dhaka
"BNT-8" 1 Asia/Brunei
"BOT4" 1 America/La_Paz
"BRT3" 7 America/Araguaina America/Bahia America/Belem
America/Fortaleza America/Maceio America/Recife America/Santarem
"BRT3BRST,M10.3.0/0,M2.3.0/0" 2 America/Sao_Paulo Brazil/East
"BST-11" 1 Pacific/Bougainville
"BTT-6" 2 Asia/Thimbu Asia/Thimphu
"CAT-2" 8 Africa/Blantyre Africa/Bujumbura Africa/Gaborone
Africa/Harare Africa/Kigali Africa/Lubumbashi Africa/Lusaka Africa/Maputo
"CCT-6:30" 1 Indian/Cocos
"CET-1" 2 Africa/Algiers Africa/Tunis
"CET-1CEST,M3.5.0,M10.5.0/3" 36 Africa/Ceuta Arctic/Longyearbyen
Atlantic/Jan_Mayen CET Europe/Amsterdam Europe/Andorra Europe/Belgrade
Europe/Berlin Europe/Bratislava Europe/Brussels Europe/Budapest
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
Poland
"CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" 2 NZ-CHAT Pacific/Chatham
"CHOT-8CHOST,M3.5.6,M9.5.6/0" 1 Asia/Choibalsan
"CHUT-10" 3 Pacific/Chuuk Pacific/Truk Pacific/Yap
"CKT10" 1 Pacific/Rarotonga
"CLT3" 3 America/Santiago Antarctica/Palmer Chile/Continental
"COT5" 1 America/Bogota
"CST-8" 9 Asia/Chongqing Asia/Chungking Asia/Harbin Asia/Macao
Asia/Macau Asia/Shanghai Asia/Taipei PRC ROC
"CST5CDT,M3.2.0/0,M11.1.0/1" 2 America/Havana Cuba
"CST6" 10 America/Belize America/Costa_Rica America/El_Salvador
America/Guatemala America/Managua America/Regina America/Swift_Current
America/Tegucigalpa Canada/East-Saskatchewan Canada/Saskatchewan
"CST6CDT,M3.2.0,M11.1.0" 17 America/Chicago America/Indiana/Knox
America/Indiana/Tell_City America/Knox_IN America/Matamoros
America/Menominee America/North_Dakota/Beulah America/North_Dakota/Center
America/North_Dakota/New_Salem America/Rainy_River America/Rankin_Inlet
America/Resolute America/Winnipeg Canada/Central CST6CDT US/Central
US/Indiana-Starke
"CST6CDT,M4.1.0,M10.5.0" 5 America/Bahia_Banderas America/Merida
America/Mexico_City America/Monterrey Mexico/General
"CVT1" 1 Atlantic/Cape_Verde
"CXT-7" 1 Indian/Christmas
"ChST-10" 2 Pacific/Guam Pacific/Saipan
"DAVT-7" 1 Antarctica/Davis
"DDUT-10" 1 Antarctica/DumontDUrville
"EAST5" 2 Chile/EasterIsland Pacific/Easter
"EAT-3" 13 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
"ECT5" 1 America/Guayaquil
"EET-2" 5 Africa/Cairo Africa/Tripoli Egypt Europe/Kaliningrad Libya
"EET-2EEST,M3.5.0,M10.5.0/3" 2 Europe/Chisinau Europe/Tiraspol
"EET-2EEST,M3.5.0/0,M10.5.0/0" 1 Asia/Beirut
"EET-2EEST,M3.5.0/3,M10.5.0/4" 17 Asia/Istanbul Asia/Nicosia EET
Europe/Athens Europe/Bucharest Europe/Helsinki Europe/Istanbul Europe/Kiev
Europe/Mariehamn Europe/Nicosia Europe/Riga Europe/Sofia Europe/Tallinn
Europe/Uzhgorod Europe/Vilnius Europe/Zaporozhye Turkey
"EET-2EEST,M3.5.4/24,M10.5.5/1" 1 Asia/Amman
"EET-2EEST,M3.5.5/0,M10.5.5/0" 1 Asia/Damascus
"EGT1EGST,M3.5.0/0,M10.5.0/1" 1 America/Scoresbysund
"EST5" 8 America/Atikokan America/Cancun America/Cayman
America/Coral_Harbour America/Jamaica America/Panama EST Jamaica
"EST5EDT,M3.2.0,M11.1.0" 27 America/Detroit America/Fort_Wayne
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/Nipigon
America/Pangnirtung America/Port-au-Prince America/Thunder_Bay
America/Toronto Canada/Eastern EST5EDT posixrules US/East-Indiana
US/Eastern US/Michigan
"FJT-12FJST,M11.1.0,M1.3.0/3" 1 Pacific/Fiji
"FKST3" 1 Atlantic/Stanley
"FNT2" 2 America/Noronha Brazil/DeNoronha
"GALT6" 1 Pacific/Galapagos
"GAMT9" 1 Pacific/Gambier
"GET-4" 1 Asia/Tbilisi
"GFT3" 1 America/Cayenne
"GILT-12" 1 Pacific/Tarawa
"GMT0" 29 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 America/Danmarkshavn Atlantic/Reykjavik Atlantic/St_Helena
Etc/GMT Etc/GMT+0 Etc/GMT-0 Etc/GMT0 Etc/Greenwich GMT GMT+0 GMT0 GMT-0
Greenwich Iceland localtime
"GMT0BST,M3.5.0/1,M10.5.0" 7 Europe/Belfast Europe/Guernsey
Europe/Isle_of_Man Europe/Jersey Europe/London GB GB-Eire
"GMT0IST,M3.5.0/1,M10.5.0" 2 Eire Europe/Dublin
"GST-4" 2 Asia/Dubai Asia/Muscat
"GST2" 1 Atlantic/South_Georgia
"GYT4" 1 America/Guyana
"HKT-8" 2 Asia/Hong_Kong Hongkong
"HOVT-7HOVST,M3.5.6,M9.5.6/0" 1 Asia/Hovd
"HST10" 4 HST Pacific/Honolulu Pacific/Johnston US/Hawaii
"HST10HDT,M3.2.0,M11.1.0" 3 America/Adak America/Atka US/Aleutian
"ICT-7" 5 Asia/Bangkok Asia/Ho_Chi_Minh Asia/Phnom_Penh Asia/Saigon
Asia/Vientiane
"IOT-6" 1 Indian/Chagos
"IRKT-8" 1 Asia/Irkutsk
"IRST-3:30IRDT,J80/0,J264/0" 2 Asia/Tehran Iran
"IST-5:30" 3 Asia/Calcutta Asia/Colombo Asia/Kolkata
"JST-9" 2 Asia/Tokyo Japan
"KGT-6" 1 Asia/Bishkek
"KOST-11" 1 Pacific/Kosrae
"KRAT-7" 2 Asia/Krasnoyarsk Asia/Novokuznetsk
"KST-8:30" 1 Asia/Pyongyang
"KST-9" 2 Asia/Seoul ROK
"LHST-10:30LHDT-11,M10.1.0,M4.1.0" 2 Australia/LHI Australia/Lord_Howe
"LINT-14" 1 Pacific/Kiritimati
"MAGT-10" 1 Asia/Magadan
"MART9:30" 1 Pacific/Marquesas
"MAWT-5" 1 Antarctica/Mawson
"MET-1MEST,M3.5.0,M10.5.0/3" 1 MET
"MHT-12" 3 Kwajalein Pacific/Kwajalein Pacific/Majuro
"MIST-11" 1 Antarctica/Macquarie
"MMT-6:30" 1 Asia/Rangoon
"MSK-3" 5 Europe/Minsk Europe/Moscow Europe/Simferopol
Europe/Volgograd W-SU
"MST7" 7 America/Creston America/Dawson_Creek America/Fort_Nelson
America/Hermosillo America/Phoenix MST US/Arizona
"MST7MDT,M3.2.0,M11.1.0" 12 America/Boise America/Cambridge_Bay
America/Denver America/Edmonton America/Inuvik America/Ojinaga
America/Shiprock America/Yellowknife Canada/Mountain MST7MDT Navajo
US/Mountain
"MST7MDT,M4.1.0,M10.5.0" 3 America/Chihuahua America/Mazatlan
Mexico/BajaSur
"MUT-4" 1 Indian/Mauritius
"MVT-5" 1 Indian/Maldives
"MYT-8" 2 Asia/Kuala_Lumpur Asia/Kuching
"NCT-11" 1 Pacific/Noumea
"NFT-11" 1 Pacific/Norfolk
"NOVT-6" 1 Asia/Novosibirsk
"NPT-5:45" 2 Asia/Kathmandu Asia/Katmandu
"NRT-12" 1 Pacific/Nauru
"NST3:30NDT,M3.2.0,M11.1.0" 2 America/St_Johns Canada/Newfoundland
"NUT11" 1 Pacific/Niue
"NZST-12NZDT,M9.5.0,M4.1.0/3" 4 Antarctica/McMurdo
Antarctica/South_Pole NZ Pacific/Auckland
"OMST-6" 1 Asia/Omsk
"ORAT-5" 1 Asia/Oral
"PET5" 1 America/Lima
"PETT-12" 1 Asia/Kamchatka
"PGT-10" 1 Pacific/Port_Moresby
"PHOT-13" 1 Pacific/Enderbury
"PHT-8" 1 Asia/Manila
"PKT-5" 1 Asia/Karachi
"PMST3PMDT,M3.2.0,M11.1.0" 1 America/Miquelon
"PONT-11" 2 Pacific/Pohnpei Pacific/Ponape
"PST8" 1 Pacific/Pitcairn
"PST8PDT,M3.2.0,M11.1.0" 13 America/Dawson America/Ensenada
America/Los_Angeles America/Santa_Isabel America/Tijuana America/Vancouver
America/Whitehorse Canada/Pacific Canada/Yukon Mexico/BajaNorte PST8PDT
US/Pacific US/Pacific-New
"PWT-9" 1 Pacific/Palau
"PYT4PYST,M10.1.0/0,M3.4.0/0" 1 America/Asuncion
"QYZT-6" 1 Asia/Qyzylorda
"RET-4" 1 Indian/Reunion
"ROTT3" 1 Antarctica/Rothera
"SAKT-11" 1 Asia/Sakhalin
"SAMT-4" 1 Europe/Samara
"SAST-2" 3 Africa/Johannesburg Africa/Maseru Africa/Mbabane
"SBT-11" 1 Pacific/Guadalcanal
"SCT-4" 1 Indian/Mahe
"SGT-8" 2 Asia/Singapore Singapore
"SRET-11" 1 Asia/Srednekolymsk
"SRT3" 1 America/Paramaribo
"SST11" 4 Pacific/Midway Pacific/Pago_Pago Pacific/Samoa US/Samoa
"SYOT-3" 1 Antarctica/Syowa
"TAHT10" 1 Pacific/Tahiti
"TFT-5" 1 Indian/Kerguelen
"TJT-5" 1 Asia/Dushanbe
"TKT-13" 1 Pacific/Fakaofo
"TLT-9" 1 Asia/Dili
"TMT-5" 2 Asia/Ashgabat Asia/Ashkhabad
"TOT-13" 1 Pacific/Tongatapu
"TVT-12" 1 Pacific/Funafuti
"UCT0" 2 Etc/UCT UCT
"ULAT-8ULAST,M3.5.6,M9.5.6/0" 2 Asia/Ulaanbaatar Asia/Ulan_Bator
"UTC0" 6 Etc/Universal Etc/UTC Etc/Zulu Universal UTC Zulu
"UTC0CEST-2,M3.5.0/1,M10.5.0/3" 1 Antarctica/Troll
"UYT3" 1 America/Montevideo
"UZT-5" 2 Asia/Samarkand Asia/Tashkent
"VET4:30" 1 America/Caracas
"VLAT-10" 2 Asia/Ust-Nera Asia/Vladivostok
"VOST-6" 1 Antarctica/Vostok
"VUT-11" 1 Pacific/Efate
"WAKT-12" 1 Pacific/Wake
"WAT-1" 11 Africa/Bangui Africa/Brazzaville Africa/Douala
Africa/Kinshasa Africa/Lagos Africa/Libreville Africa/Luanda Africa/Malabo
Africa/Ndjamena Africa/Niamey Africa/Porto-Novo
"WAT-1WAST,M9.1.0,M4.1.0" 1 Africa/Windhoek
"WET0WEST,M3.5.0,M10.5.0/3" 2 Africa/Casablanca Africa/El_Aaiun
"WET0WEST,M3.5.0/1,M10.5.0" 7 Atlantic/Canary Atlantic/Faeroe
Atlantic/Faroe Atlantic/Madeira Europe/Lisbon Portugal WET
"WFT-12" 1 Pacific/Wallis
"WIB-7" 2 Asia/Jakarta Asia/Pontianak
"WIT-9" 1 Asia/Jayapura
"WITA-8" 2 Asia/Makassar Asia/Ujung_Pandang
"WSST-13WSDT,M9.5.0/3,M4.1.0/4" 1 Pacific/Apia
"XJT-6" 2 Asia/Kashgar Asia/Urumqi
"YAKT-9" 3 Asia/Chita Asia/Khandyga Asia/Yakutsk
"YEKT-5" 1 Asia/Yekaterinburg
On Mon, Apr 18, 2016 at 12:52 PM, Paul Eggert <eggert at cs.ucla.edu> wrote:
> On 04/18/2016 09:04 AM, Matt Johnson wrote:
>
>> To my knowledge, there is no project that maintains localized
>> translations for comments in zone.tab. Not even CLDR.
>>
>
> I don't know of any either. Perhaps CLDR could take this on too?
>
> I've computed a "threshold date" for each zone, where the zones are
>> identical from the threshold date forward. That date can be set by the
>> developer of the application to limit the subset of zones to choose from
>> without imposing too much opinion. I'm curious if anyone else has explored
>> this space before, or used similar techniques?
>>
>
> I did something along those lines, but gave up on it as being too hard to
> automate well. For example, if the threshold is 2001-01-01 00:00:00 UTC,
> then we should merge America/Boise, America/Denver, America/Edmonton, and
> America/Yellowknife. How does the automated procedure choose the ID of the
> merged region? It should be America/Denver, as that has the greatest
> population, but how is the population recorded and what happens as
> population changes? Furthermore, how does the automated procedure derive
> the comment for the merged region? And how would CLDR translate this
> automatically-derived comment?
>
> For this reason I'm somewhat inclined to add one more hand-maintained
> table, zone-now.tab, which is like zone-1970.tab except using a cutoff of
> "now" (a deliberatly moving target) instead of a cutoff of 1970. That
> should be good enough for applications that don't need historical time
> stamps, and will be easier to automate and CLDRize.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mm.icann.org/pipermail/tz/attachments/20160421/bd3958a2/attachment.htm>
More information about the tz
mailing list