timezone

The current set of places where tcl will try to find Olson files is:

    /usr/share/zoneinfo
    /user/share/lib/zoneinfo
    /user/lib/zoneinfo
    /user/local/etc/zoneinfo
    C:/Progra~1/cygwin/usr/local/etc/zoneinfo

That's what's done if a search for a Tcl time zone definition in $tcl_library/tzdata fails.

In addition, the set of hardcoded time zone names in ::tcl::clock::LegacyTimeZone is recognized, as is any Posix time zone specifier, and the special name 'localtime'.

"...'localtime' is not recommended ..."

"... if -timezone is not supplied, the order of preference is $env(TCL_TZ)*; $env(TZ); the time zone from the Windows registry; :Tcl/Localtime (allowing a site to install its own time zone definition in $tcl_library/tzdata); and :localtime (the C library)"

"... this structure means that Starpacks for Linux and Solaris [and Mac OS X ] can safely omit $tcl_library/tzdata with minimal loss of functionality, since those platforms will have the Olson files. Windows and HP-UX need tzdata for full functionality, but can omit it if 8.4-level timezone functionality is adequate ..."


Tcl 8.5, as of October, 2005, comes with the following set of named time zones:

 :Africa/Abidjan                     :Africa/Accra
 :Africa/Addis_Ababa                 :Africa/Algiers
 :Africa/Asmera                      :Africa/Bamako
 :Africa/Bangui                      :Africa/Banjul
 :Africa/Bissau                      :Africa/Blantyre
 :Africa/Brazzaville                 :Africa/Bujumbura
 :Africa/Cairo                       :Africa/Casablanca
 :Africa/Ceuta                       :Africa/Conakry
 :Africa/Dakar                       :Africa/Dar_es_Salaam 
 :Africa/Djibouti                    :Africa/Douala
 :Africa/El_Aaiun                    :Africa/Freetown
 :Africa/Gaborone                    :Africa/Harare
 :Africa/Johannesburg                :Africa/Kampala
 :Africa/Khartoum                    :Africa/Kigali
 :Africa/Kinshasa                    :Africa/Lagos
 :Africa/Libreville                  :Africa/Lome
 :Africa/Luanda                      :Africa/Lubumbashi
 :Africa/Lusaka                      :Africa/Malabo
 :Africa/Maputo                      :Africa/Maseru
 :Africa/Mbabane                     :Africa/Mogadishu
 :Africa/Monrovia                    :Africa/Nairobi
 :Africa/Ndjamena                    :Africa/Niamey
 :Africa/Nouakchott                  :Africa/Ouagadougou
 :Africa/Porto-Novo                  :Africa/Sao_Tome
 :Africa/Timbuktu                    :Africa/Tripoli
 :Africa/Tunis                       :Africa/Windhoek
 :America/Adak                       :America/Anchorage
 :America/Anguilla                   :America/Antigua
 :America/Araguaina                  :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/San_Juan
 :America/Argentina/Tucuman          :America/Argentina/Ushuaia
 :America/Aruba                      :America/Asuncion
 :America/Atka                       :America/Bahia
 :America/Barbados                   :America/Belem
 :America/Belize                     :America/Boa_Vista
 :America/Bogota                     :America/Boise
 :America/Buenos_Aires               :America/Cambridge_Bay
 :America/Campo_Grande               :America/Cancun
 :America/Caracas                    :America/Catamarca
 :America/Cayenne                    :America/Cayman
 :America/Chicago                    :America/Chihuahua
 :America/Coral_Harbour              :America/Cordoba
 :America/Costa_Rica                 :America/Cuiaba
 :America/Curacao                    :America/Danmarkshavn
 :America/Dawson                     :America/Dawson_Creek
 :America/Denver                     :America/Detroit
 :America/Dominica                   :America/Edmonton
 :America/Eirunepe                   :America/El_Salvador
 :America/Ensenada                   :America/Fortaleza
 :America/Fort_Wayne                 :America/Glace_Bay
 :America/Godthab                    :America/Goose_Bay
 :America/Grand_Turk                 :America/Grenada
 :America/Guadeloupe                 :America/Guatemala
 :America/Guayaquil                  :America/Guyana
 :America/Halifax                    :America/Havana
 :America/Hermosillo                 :America/Indiana/Indianapolis
 :America/Indiana/Knox               :America/Indiana/Marengo
 :America/Indiana/Vevay              :America/Indianapolis
 :America/Inuvik                     :America/Iqaluit
 :America/Jamaica                    :America/Jujuy
 :America/Juneau                     :America/Kentucky/Louisville
 :America/Kentucky/Monticello        :America/Knox_IN
 :America/La_Paz                     :America/Lima
 :America/Los_Angeles                :America/Louisville
 :America/Maceio                     :America/Managua
 :America/Manaus                     :America/Martinique
 :America/Mazatlan                   :America/Mendoza
 :America/Menominee                  :America/Merida
 :America/Mexico_City                :America/Miquelon
 :America/Monterrey                  :America/Montevideo
 :America/Montreal                   :America/Montserrat
 :America/Nassau                     :America/New_York
 :America/Nipigon                    :America/Nome
 :America/Noronha                    :America/North_Dakota/Center
 :America/Panama                     :America/Pangnirtung
 :America/Paramaribo                 :America/Phoenix
 :America/Port-au-Prince             :America/Porto_Acre
 :America/Porto_Velho                :America/Port_of_Spain
 :America/Puerto_Rico                :America/Rainy_River
 :America/Rankin_Inlet               :America/Recife
 :America/Regina                     :America/Rio_Branco
 :America/Rosario                    :America/Santiago
 :America/Santo_Domingo              :America/Sao_Paulo
 :America/Scoresbysund               :America/Shiprock
 :America/St_Johns                   :America/St_Kitts
 :America/St_Lucia                   :America/St_Thomas
 :America/St_Vincent                 :America/Swift_Current
 :America/Tegucigalpa                :America/Thule
 :America/Thunder_Bay                :America/Tijuana
 :America/Toronto                    :America/Tortola
 :America/Vancouver                  :America/Virgin
 :America/Whitehorse                 :America/Winnipeg
 :America/Yakutat                    :America/Yellowknife
 :Antarctica/Casey                   :Antarctica/Davis
 :Antarctica/DumontDUrville          :Antarctica/Mawson
 :Antarctica/McMurdo                 :Antarctica/Palmer
 :Antarctica/Rothera                 :Antarctica/South_Pole
 :Antarctica/Syowa                   :Antarctica/Vostok
 :Arctic/Longyearbyen                :Asia/Aden
 :Asia/Almaty                        :Asia/Amman
 :Asia/Anadyr                        :Asia/Aqtau
 :Asia/Aqtobe                        :Asia/Ashgabat
 :Asia/Ashkhabad                     :Asia/Baghdad
 :Asia/Bahrain                       :Asia/Baku
 :Asia/Bangkok                       :Asia/Beirut
 :Asia/Bishkek                       :Asia/Brunei
 :Asia/Calcutta                      :Asia/Choibalsan
 :Asia/Chongqing                     :Asia/Chungking
 :Asia/Colombo                       :Asia/Dacca
 :Asia/Damascus                      :Asia/Dhaka
 :Asia/Dili                          :Asia/Dubai
 :Asia/Dushanbe                      :Asia/Gaza
 :Asia/Harbin                        :Asia/Hong_Kong
 :Asia/Hovd                          :Asia/Irkutsk
 :Asia/Istanbul                      :Asia/Jakarta
 :Asia/Jayapura                      :Asia/Jerusalem
 :Asia/Kabul                         :Asia/Kamchatka
 :Asia/Karachi                       :Asia/Kashgar
 :Asia/Katmandu                      :Asia/Krasnoyarsk
 :Asia/Kuala_Lumpur                  :Asia/Kuching
 :Asia/Kuwait                        :Asia/Macao
 :Asia/Macau                         :Asia/Magadan
 :Asia/Makassar                      :Asia/Manila
 :Asia/Muscat                        :Asia/Nicosia
 :Asia/Novosibirsk                   :Asia/Omsk
 :Asia/Oral                          :Asia/Phnom_Penh
 :Asia/Pontianak                     :Asia/Pyongyang
 :Asia/Qatar                         :Asia/Qyzylorda
 :Asia/Rangoon                       :Asia/Riyadh
 :Asia/Saigon                        :Asia/Sakhalin
 :Asia/Samarkand                     :Asia/Seoul
 :Asia/Shanghai                      :Asia/Singapore
 :Asia/Taipei                        :Asia/Tashkent
 :Asia/Tbilisi                       :Asia/Tehran
 :Asia/Tel_Aviv                      :Asia/Thimbu
 :Asia/Thimphu                       :Asia/Tokyo
 :Asia/Ujung_Pandang                 :Asia/Ulaanbaatar
 :Asia/Ulan_Bator                    :Asia/Urumqi
 :Asia/Vientiane                     :Asia/Vladivostok
 :Asia/Yakutsk                       :Asia/Yekaterinburg
 :Asia/Yerevan                       :Atlantic/Azores
 :Atlantic/Bermuda                   :Atlantic/Canary
 :Atlantic/Cape_Verde                :Atlantic/Faeroe
 :Atlantic/Jan_Mayen                 :Atlantic/Madeira
 :Atlantic/Reykjavik                 :Atlantic/South_Georgia
 :Atlantic/Stanley                   :Atlantic/St_Helena
 :Australia/ACT                      :Australia/Adelaide
 :Australia/Brisbane                 :Australia/Broken_Hill
 :Australia/Canberra                 :Australia/Currie
 :Australia/Darwin                   :Australia/Hobart
 :Australia/LHI                      :Australia/Lindeman
 :Australia/Lord_Howe                :Australia/Melbourne
 :Australia/North                    :Australia/NSW
 :Australia/Perth                    :Australia/Queensland
 :Australia/South                    :Australia/Sydney
 :Australia/Tasmania                 :Australia/Victoria
 :Australia/West                     :Australia/Yancowinna
 :Brazil/Acre                        :Brazil/DeNoronha
 :Brazil/East                        :Brazil/West
 :Canada/Atlantic                    :Canada/Central
 :Canada/East-Saskatchewan           :Canada/Eastern
 :Canada/Mountain                    :Canada/Newfoundland
 :Canada/Pacific                     :Canada/Saskatchewan
 :Canada/Yukon                       :CET
 :Chile/Continental                  :Chile/EasterIsland
 :CST6CDT                            :Cuba
 :EET                                :Egypt
 :Eire                               :EST
 :EST5EDT                            :Etc/GMT
 :Etc/GMT+0                          :Etc/GMT+1
 :Etc/GMT+10                         :Etc/GMT+11
 :Etc/GMT+12                         :Etc/GMT+2
 :Etc/GMT+3                          :Etc/GMT+4
 :Etc/GMT+5                          :Etc/GMT+6
 :Etc/GMT+7                          :Etc/GMT+8
 :Etc/GMT+9                          :Etc/GMT-0
 :Etc/GMT-1                          :Etc/GMT-10
 :Etc/GMT-11                         :Etc/GMT-12
 :Etc/GMT-13                         :Etc/GMT-14
 :Etc/GMT-2                          :Etc/GMT-3
 :Etc/GMT-4                          :Etc/GMT-5
 :Etc/GMT-6                          :Etc/GMT-7
 :Etc/GMT-8                          :Etc/GMT-9
 :Etc/GMT0                           :Etc/Greenwich
 :Etc/UCT                            :Etc/Universal
 :Etc/UTC                            :Etc/Zulu
 :Europe/Amsterdam                   :Europe/Andorra
 :Europe/Athens                      :Europe/Belfast
 :Europe/Belgrade                    :Europe/Berlin
 :Europe/Bratislava                  :Europe/Brussels
 :Europe/Bucharest                   :Europe/Budapest
 :Europe/Chisinau                    :Europe/Copenhagen
 :Europe/Dublin                      :Europe/Gibraltar
 :Europe/Helsinki                    :Europe/Istanbul
 :Europe/Kaliningrad                 :Europe/Kiev
 :Europe/Lisbon                      :Europe/Ljubljana
 :Europe/London                      :Europe/Luxembourg
 :Europe/Madrid                      :Europe/Malta
 :Europe/Mariehamn                   :Europe/Minsk
 :Europe/Monaco                      :Europe/Moscow
 :Europe/Nicosia                     :Europe/Oslo
 :Europe/Paris                       :Europe/Prague
 :Europe/Riga                        :Europe/Rome
 :Europe/Samara                      :Europe/San_Marino
 :Europe/Sarajevo                    :Europe/Simferopol
 :Europe/Skopje                      :Europe/Sofia
 :Europe/Stockholm                   :Europe/Tallinn
 :Europe/Tirane                      :Europe/Tiraspol
 :Europe/Uzhgorod                    :Europe/Vaduz
 :Europe/Vatican                     :Europe/Vienna
 :Europe/Vilnius                     :Europe/Warsaw
 :Europe/Zagreb                      :Europe/Zaporozhye
 :Europe/Zurich                      :GB
 :GB-Eire                            :GMT
 :GMT+0                              :GMT-0
 :GMT0                               :Greenwich
 :Hongkong                           :HST
 :Iceland                            :Indian/Antananarivo
 :Indian/Chagos                      :Indian/Christmas
 :Indian/Cocos                       :Indian/Comoro
 :Indian/Kerguelen                   :Indian/Mahe
 :Indian/Maldives                    :Indian/Mauritius
 :Indian/Mayotte                     :Indian/Reunion
 :Iran                               :Israel
 :Jamaica                            :Japan
 :Kwajalein                          :Libya
 :MET                                :Mexico/BajaNorte
 :Mexico/BajaSur                     :Mexico/General
 :MST                                :MST7MDT 
 :Navajo                             :NZ
 :NZ-CHAT                            :Pacific/Apia
 :Pacific/Auckland                   :Pacific/Chatham
 :Pacific/Easter                     :Pacific/Efate
 :Pacific/Enderbury                  :Pacific/Fakaofo
 :Pacific/Fiji                       :Pacific/Funafuti
 :Pacific/Galapagos                  :Pacific/Gambier
 :Pacific/Guadalcanal                :Pacific/Guam
 :Pacific/Honolulu                   :Pacific/Johnston
 :Pacific/Kiritimati                 :Pacific/Kosrae
 :Pacific/Kwajalein                  :Pacific/Majuro
 :Pacific/Marquesas                  :Pacific/Midway
 :Pacific/Nauru                      :Pacific/Niue
 :Pacific/Norfolk                    :Pacific/Noumea
 :Pacific/Pago_Pago                  :Pacific/Palau
 :Pacific/Pitcairn                   :Pacific/Ponape
 :Pacific/Port_Moresby               :Pacific/Rarotonga
 :Pacific/Saipan                     :Pacific/Samoa
 :Pacific/Tahiti                     :Pacific/Tarawa
 :Pacific/Tongatapu                  :Pacific/Truk
 :Pacific/Wake                       :Pacific/Wallis
 :Pacific/Yap                        :Poland
 :Portugal                           :PRC
 :PST8PDT                            :ROC
 :ROK                                :Singapore
 :SystemV/AST4                       :SystemV/AST4ADT
 :SystemV/CST6                       :SystemV/CST6CDT
 :SystemV/EST5                       :SystemV/EST5EDT
 :SystemV/HST10                      :SystemV/MST7
 :SystemV/MST7MDT                    :SystemV/PST8
 :SystemV/PST8PDT                    :SystemV/YST9
 :SystemV/YST9YDT                    :Turkey
 :UCT                                :Universal
 :US/Alaska                          :US/Aleutian
 :US/Arizona                         :US/Central
 :US/East-Indiana                    :US/Eastern
 :US/Hawaii                          :US/Indiana-Starke
 :US/Michigan                        :US/Mountain
 :US/Pacific                         :US/Pacific-New
 :US/Samoa                           :UTC
 :W-SU                               :WET
 :Zulu

The list of legacy time zones handled by Tcl is:

  • adt - Atlantic Daylight
  • ahst - Alaska-Hawaii Standard
  • ast - Atlantic Standard
  • at - Azores
  • bst - British Summer
  • bt - Baghdad, USSR Zone 2
  • cadt - Central Australian Daylight
  • cadt - Central Australian Daylight Time
  • cadt - Central Australian Standard Time
  • cast - Central Australian Standard
  • cat - Central Alaska
  • cct - China Coast, USSR Zone 7
  • cct - China Coast, USSR Zone 7
  • cdt - Central Daylight
  • cest - Central European Summer
  • cet - Central European
  • cst - Central Standard
  • dst - DST on (hour is ignored)
  • eadt - Eastern Australian Daylight
  • eadt - Eastern Australian Daylight Time
  • eadt - Eastern Australian Standard Time
  • east - Eastern Australian Standard
  • edt - Eastern Daylight
  • eet - Eastern Europe, USSR Zone 1
  • est - Eastern Standard
  • fst - French Summer
  • fwt - French Winter
  • gmt - Greenwich Mean
  • gst - Guam Standard, USSR Zone 9
  • gst - Guam Standard, USSR Zone 9
  • hdt - Hawaii Daylight
  • hst - Hawaii Standard
  • idle - International Date Line East
  • idlw - International Date Line West
  • ist - Indian Standard
  • it - Iran
  • jst - Japan Standard, USSR Zone 8
  • jt - Java (3pm in Cronusland!)
  • mdt - Mountain Daylight
  • mest - Middle European Summer
  • met - Middle European
  • mewt - Middle European Winter
  • mst - Mountain Standard
  • ndt - Newfoundland Daylight
  • nft - Newfoundland
  • nst - Newfoundland Standard
  • nt - Nome
  • nzdt - New Zealand Daylight
  • nzst - New Zealand Standard
  • nzt - New Zealand
  • pdt - Pacific Daylight
  • pst - Pacific Standard
  • sst - Swedish Summer
  • swt - Swedish Winter
  • uct - Universal Coordinated Time
  • ut - Universal (Coordinated)
  • utc
  • wadt - West Australian Daylight
  • wast - West Australian Standard
  • wat - West Africa
  • wet - Western European
  • ydt - Yukon Daylight
  • yst - Yukon Standard
  • zp4 - USSR Zone 3
  • zp5 - USSR Zone 4
  • zp6 - USSR Zone 5

RS 2007-01-03 - Here's a little routine to collect the timezones known to Windows:

 proc timezone {{what ""}} {
     set k {HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones}
     set res {} 
     foreach i [registry keys $k] {
          set it [registry get $k\\$i Display]
          if {$what eq "" || [string match *$what* $it]} {
              lappend res $it
          }
     }
     lsort -dict $res
 }

Test:

 % timezone Moscow
 {(GMT+03:00) Moscow, St. Petersburg, Volgograd}
 % timezone Beijing
 {(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi}

Without arguments, it returns something like

{(GMT) Casablanca, Monrovia} {(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London} {(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna} {(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague} {(GMT+01:00) Brussels, Copenhagen, Madrid, Paris} {(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb} {(GMT+01:00) West Central Africa} {(GMT+02:00) Athens, Beirut, Istanbul, Minsk} {(GMT+02:00) Bucharest} {(GMT+02:00) Cairo} {(GMT+02:00) Harare, Pretoria} {(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius} {(GMT+02:00) Jerusalem} {(GMT+03:00) Baghdad} ...


See also http://home.tiscali.nl/~t876506/TZworld.html


Another example fragment (due to KBK [L1 ]) that illustrates the power of 8.5:

    % clock format [clock seconds] -format "%Z %z" \
          -timezone :America/New_York
   EDT -0400