On 12/4/17 19:38, David Patte ₯ wrote:
Using such a scheme, a database such as geonames would then map a location to the tz id (as it does now), defering political arguments to geonames, and removing them from this list. It seems appropriate.
But what about the tz designations (such as EDT), do we have a solution to that conundrum? I think under such as scheme the differentiation between names and aliases disappears. They are all names mapped onto a unique tzid, so America/NewYork and US/Eastern would refer to the same tzid.
On 2017-12-04 19:21, Michael Douglass wrote:
With a mapping table it doesn't matter what the id is. In fact any scheme for producing an id that is reversible or ordered in any way will lead to people using that then complaining down the road if you do something that "breaks" their code.
I'd suggest writing a small routine to create an 8 character random base64 id and get a new random id for each new zone. (I'd suggest a uuid but they're bulky).
Then create a legacy-mappings.txt file to map all the current names and aliases on to the new id - then we're sort of done.
I'd suggest a simple increasing sequence but you can guarantee that somebody would use it as an index even if told not to.
Then we can stop having these long arguments about why one name or another isn't in the tz data. Everybody is free to generate their own list if they so wish.
On 12/4/17 19:05, J Andrew Lipscomb wrote:
Le 4 déc. 2017 à 18:18, Michael Douglass <mikeadouglass@gmail.com> a écrit : Exactly - that's why I said opaque I just came up with a system I think is opaque enough while still maintaining a bit of useful information in the id: First up, it goes with the letter-digit-letter format.
The first letter represents the (lower) GMT offset of the zone in military format. (This represents the one real flaw I see: a zone’s proper letter can change if it adopts something on the order of year-round daylight savings time.)
The digit is usually 0. It changes in the following cases: 3 would indicate a +:15 zone if there were any, 5 is a +:30 zone, and 8 is a +:45 zone. 1 is used with M (normally +12) to indicate +13, and M2 similarly indicates +14. 1 is also used with other letters when the 0 range overflows.
The second letter is meaningless UNLESS it is Z. Z indicates a non-geographic time zone (the Etc/ series of indicators).
The list I just randomized, presented in order of newID:
Africa/Ndjamena a0a Africa/Tunis a0b Europe/Gibraltar a0c Europe/Monaco a0d Europe/Oslo a0e Europe/Warsaw a0f Europe/Zurich a0g Europe/Madrid a0h Europe/Copenhagen a0i Europe/Brussels a0j Europe/Malta a0k Europe/Andorra a0l Africa/Algiers a0m Europe/Paris a0n Europe/Amsterdam a0o Europe/Luxembourg a0p Africa/Ceuta a0q Europe/Tirane a0r Europe/Vienna a0s Europe/Belgrade a0t Europe/Budapest a0u Europe/Prague a0v Europe/Rome a0w Africa/Lagos a0x Europe/Stockholm a0y Etc/GMT-1 a0z Asia/Beirut b0a Europe/Bucharest b0b Europe/Riga b0c Africa/Khartoum b0d Asia/Damascus b0e Africa/Windhoek b0f Europe/Tallinn b0g Asia/Hebron b0h Africa/Maputo b0i Europe/Athens b0j Europe/Kiev b0k Europe/Sofia b0l Africa/Johannesburg b0m Europe/Chisinau b0n Europe/Zaporozhye b0o Asia/Famagusta b0p Asia/Nicosia b0q Africa/Tripoli b0r Europe/Uzhgorod b0s Asia/Jerusalem b0t Africa/Cairo b0u Asia/Amman b0v Asia/Gaza b0w Europe/Helsinki b0x Europe/Kaliningrad b0y Etc/GMT-2 b0z Europe/Vilnius b1a Europe/Minsk c0a Europe/Kirov c0b Africa/Nairobi c0c Antarctica/Syowa c0d Asia/Baghdad c0e Asia/Riyadh c0f Asia/Qatar c0g Europe/Istanbul c0h Africa/Juba c0i Europe/Moscow c0j Europe/Volgograd c0k Etc/GMT-3 c0z Asia/Tehran c5a Asia/Tbilisi d0a Europe/Saratov d0b Asia/Dubai d0c Europe/Samara d0d Indian/Reunion d0e Europe/Astrakhan d0f Indian/Mahe d0g Asia/Baku d0h Europe/Ulyanovsk d0i Asia/Yerevan d0j Indian/Mauritius d0k Etc/GMT-4 d0z Asia/Kabul d5a Asia/Samarkand e0a Asia/Aqtobe e0b Asia/Oral e0c Asia/Dushanbe e0d Asia/Karachi e0e Asia/Aqtau e0f Indian/Kerguelen e0g Asia/Yekaterinburg e0h Asia/Ashgabat e0i Asia/Tashkent e0j Antarctica/Mawson e0k Asia/Atyrau e0l Indian/Maldives e0m Etc/GMT-5 e0z Asia/Colombo e5a Asia/Kathmandu e8a Asia/Omsk f0a Asia/Dhaka f0b Antarctica/Vostok f0c Asia/Bishkek f0d Asia/Almaty f0e Asia/Thimphu f0f Asia/Urumqi f0g Asia/Qyzylorda f0h Indian/Chagos f0i Etc/GMT-6 f0z Asia/Yangon f5a Indian/Cocos f5b Asia/Pontianak g0a Asia/Tomsk g0b Asia/Bangkok g0c Asia/Hovd g0d Asia/Novokuznetsk g0e Asia/Jakarta g0f Asia/Krasnoyarsk g0g Antarctica/Davis g0h Asia/Barnaul g0i Asia/Novosibirsk g0j Indian/Christmas g0k Asia/Ho_Chi_Minh g0l Etc/GMT-7 g0z Asia/Singapore h0a Asia/Taipei h0b Asia/Makassar h0c Asia/Brunei h0d Asia/Kuching h0e Asia/Ulaanbaatar h0f Asia/Kuala_Lumpur h0g Asia/Choibalsan h0h Asia/Shanghai h0i Asia/Macau h0j Asia/Irkutsk h0k Asia/Hong_Kong h0l Asia/Manila h0m Australia/Perth h0n Etc/GMT-8 h0z Asia/Pyongyang h5a Australia/Eucla h8a Pacific/Palau i0a Asia/Khandyga i0b Asia/Seoul i0c Asia/Yakutsk i0d Asia/Dili i0e Asia/Chita i0f Asia/Jayapura i0g Asia/Tokyo i0h Etc/GMT-9 i0z Australia/Adelaide i5a Australia/Darwin i5b Australia/Broken_Hill i5c Australia/Brisbane k0a Pacific/Port_Moresby k0b Australia/Hobart k0c Australia/Sydney k0d Australia/Currie k0e Asia/Vladivostok k0f Australia/Lindeman k0g Australia/Melbourne k0h Asia/Ust-Nera k0i Antarctica/DumontDUrville k0j Pacific/Guam k0k Pacific/Chuuk k0l Etc/GMT-10 k0z Australia/Lord_Howe k5a Pacific/Bougainville l0a Pacific/Norfolk l0b Antarctica/Macquarie l0c Pacific/Kosrae l0d Asia/Sakhalin l0e Pacific/Noumea l0f Pacific/Guadalcanal l0g Asia/Magadan l0h Pacific/Efate l0i Asia/Srednekolymsk l0j Antarctica/Casey l0k Pacific/Pohnpei l0l Etc/GMT-11 l0z Pacific/Tarawa m0a Pacific/Nauru m0b Pacific/Majuro m0c Pacific/Fiji m0d Pacific/Kwajalein m0e Pacific/Wallis m0f Asia/Anadyr m0g Pacific/Wake m0h Pacific/Funafuti m0i Asia/Kamchatka m0j Pacific/Auckland m0k Etc/GMT-12 m0z Pacific/Tongatapu m1a Pacific/Fakaofo m1b Pacific/Enderbury m1c Pacific/Apia m1d Etc/GMT-13 m1z Pacific/Kiritimati m2a Etc/GMT-14 m2z Pacific/Chatham m8a Atlantic/Cape_Verde n0a Atlantic/Azores n0b America/Scoresbysund n0c Etc/GMT+1 n0z America/Noronha o0a Atlantic/South_Georgia o0b Etc/GMT+2 o0z America/Argentina/La_Rioja p0a America/Argentina/Catamarca p0b America/Montevideo p0c America/Argentina/Buenos_Aires p0d Antarctica/Rothera p0e America/Argentina/San_Juan p0f America/Sao_Paulo p0g America/Godthab p0h America/Araguaina p0i America/Argentina/Salta p0j America/Argentina/Mendoza p0k America/Santarem p0l America/Cayenne p0m America/Argentina/Tucuman p0n America/Argentina/Jujuy p0o Atlantic/Stanley p0p America/Argentina/Cordoba p0q America/Miquelon p0r America/Argentina/San_Luis p0s America/Belem p0t America/Maceio p0u America/Argentina/Ushuaia p0v America/Recife p0w America/Paramaribo p0x America/Bahia p0y Etc/GMT+3 p0z America/Fortaleza p1a America/Argentina/Rio_Gallegos p1b America/St_Johns p5a America/Blanc-Sablon q0a America/Grand_Turk q0b America/Goose_Bay q0c America/Glace_Bay q0d America/Guyana q0e America/Porto_Velho q0f America/Boa_Vista q0g America/Thule q0h America/Caracas q0i Atlantic/Bermuda q0j America/Martinique q0k America/Port_of_Spain q0l America/Campo_Grande q0m America/Halifax q0n America/Barbados q0o America/Moncton q0p America/Manaus q0q America/Santiago q0r America/La_Paz q0s America/Curacao q0t America/Santo_Domingo q0u America/Puerto_Rico q0v America/Asuncion q0w America/Cuiaba q0x Etc/GMT+4 q0z America/Cancun r0a America/Jamaica r0b America/Kentucky/Louisville r0c America/Rio_Branco r0d America/Indiana/Marengo r0e America/Kentucky/Monticello r0f America/Lima r0g America/Indiana/Winamac r0h America/Indiana/Indianapolis r0i America/New_York r0j America/Indiana/Vevay r0k America/Nipigon r0l America/Detroit r0m America/Guayaquil r0n America/Thunder_Bay r0o America/Panama r0p America/Iqaluit r0q America/Indiana/Vincennes r0r America/Bogota r0s America/Eirunepe r0t America/Atikokan r0u America/Indiana/Petersburg r0v America/Port-au-Prince r0w America/Nassau r0x America/Toronto r0y Etc/GMT+5 r0z America/Havana r1a America/Pangnirtung r1b America/Chicago s0a America/Resolute s0b America/Bahia_Banderas s0c America/North_Dakota/Beulah s0d America/Swift_Current s0e America/North_Dakota/Center s0f America/Winnipeg s0g America/El_Salvador s0h America/Indiana/Tell_City s0i America/Mexico_City s0j America/Costa_Rica s0k America/Monterrey s0l America/Tegucigalpa s0m America/Managua s0n America/Merida s0o America/Menominee s0p America/Rankin_Inlet s0q America/Belize s0r Pacific/Galapagos s0s America/Regina s0t America/Indiana/Knox s0u America/North_Dakota/New_Salem s0v Pacific/Easter s0w America/Rainy_River s0x America/Guatemala s0y Etc/GMT+6 s0z America/Matamoros s1a America/Edmonton t0a America/Chihuahua t0b America/Inuvik t0c America/Cambridge_Bay t0d America/Mazatlan t0e America/Hermosillo t0f America/Fort_Nelson t0g America/Boise t0h America/Yellowknife t0i America/Creston t0j America/Denver t0k America/Dawson_Creek t0l America/Phoenix t0m America/Ojinaga t0n Etc/GMT+7 t0z America/Tijuana u0a America/Los_Angeles u0b Pacific/Pitcairn u0c America/Vancouver u0d America/Whitehorse u0e America/Dawson u0f Etc/GMT+8 u0z America/Metlakatla v0a America/Anchorage v0b America/Juneau v0c America/Sitka v0d Pacific/Gambier v0e America/Yakutat v0f America/Nome v0g Etc/GMT+9 v0z Pacific/Marquesas v5a Pacific/Rarotonga w0a Pacific/Tahiti w0b Pacific/Honolulu w0c America/Adak w0d Etc/GMT+10 w0z Pacific/Pago_Pago x0a Pacific/Niue x0b Etc/GMT+11 x0z Etc/GMT+12 y0z Europe/Dublin z0a Africa/Abidjan z0b Atlantic/Faroe z0c Africa/Bissau z0d Atlantic/Madeira z0e Africa/Accra z0f Africa/Casablanca z0g Atlantic/Reykjavik z0h America/Danmarkshavn z0i Atlantic/Canary z0j Europe/Lisbon z0k Africa/Monrovia z0l Africa/El_Aaiun z0m Europe/London z0n Etc/UTC z0z Etc/GMT z0z