代码之家  ›  专栏  ›  技术社区  ›  jantimon

如何确定不同时区的时间戳的本地时间?

  •  3
  • jantimon  · 技术社区  · 16 年前

    我得到了UTC时间戳,想在不同的时区显示它们。

    也许一个例子可以说明我想做什么:

    给定时间戳 1259431620000 应显示这些时间:

    亚特兰大13:07

    旧金山10:07

    伦敦17:07

    悉尼04:07

    城市可能会改变,但我想你得到了我想要的。

    是否有一个javascript库或一个处理日光节约的通用解决方案?

    我准备好了所有时区的列表。

    由于日光节约是一个容易和常见的问题,我认为可能有一个图书馆或脚本来处理它们。

    以防您对时区表感兴趣:

    * GMT -11:00
          o Apia
          o Midway
          o Niue
          o Pago Pago
    * GMT -10:00
          o Fakaofo
          o Hawaii Time
          o Johnston
          o Rarotonga
          o Tahiti
    * GMT -09:00
          o (GMT-09:30) Marquesas
          o Alaska Time
          o Gambier
    * GMT -08:00
          o Pacific Time
          o Pacific Time - Tijuana
          o Pacific Time - Vancouver
          o Pacific Time - Whitehorse
          o Pitcairn
    * GMT -07:00
          o Mountain Time - Dawson Creek
          o Mountain Time (America/Denver)
          o Mountain Time - Edmonton
          o Mountain Time - Hermosillo
          o Mountain Time - Chihuahua, Mazatlan
          o Mountain Time - Arizona
          o Mountain Time - Yellowknife
    * GMT -06:00
          o Belize
          o Central Time
          o Costa Rica
          o El Salvador
          o Guatemala
          o Managua
          o Central Time - Mexico City
          o Central Time - Regina
          o Central Time (America/Tegucigalpa)
          o Central Time - Winnipeg
          o Easter Island
          o Galapagos
    * GMT -05:00
          o Bogota
          o Cayman
          o Grand Turk
          o Guayaquil
          o Havana
          o Eastern Time - Iqaluit
          o Jamaica
          o Lima
          o Eastern Time - Montreal
          o Nassau
          o Eastern Time
          o Panama
          o Port-au-Prince
          o Eastern Time - Toronto
    * GMT -04:00
          o (GMT-04:30) Caracas
          o Anguilla
          o Antigua
          o Aruba
          o Asuncion
          o Barbados
          o Boa Vista
          o Campo Grande
          o Cuiaba
          o Curacao
          o Dominica
          o Grenada
          o Guadeloupe
          o Guyana
          o Atlantic Time - Halifax
          o La Paz
          o Manaus
          o Martinique
          o Montserrat
          o Port of Spain
          o Porto Velho
          o Puerto Rico
          o Rio Branco
          o Santiago
          o Santo Domingo
          o St. Kitts
          o St. Lucia
          o St. Thomas
          o St. Vincent
          o Thule
          o Tortola
          o Palmer
          o Bermuda
          o Stanley
    * GMT -03:00
          o Newfoundland Time - St. Johns
          o Araguaina
          o Buenos Aires
          o Salvador
          o Belem
          o Cayenne
          o Fortaleza
          o Godthab
          o Maceio
          o Miquelon
          o Montevideo
          o Paramaribo
          o Recife
          o Sao Paulo
          o Rothera
    * GMT -02:00
          o Noronha
          o South Georgia
    * GMT -01:00
          o Scoresbysund
          o Azores
          o Cape Verde
          o Abidjan
    * GMT 00:00
          o Accra
          o Bamako
          o Banjul
          o Bissau
          o Casablanca
          o Conakry
          o Dakar
          o El Aaiun
          o Freetown
          o Lome
          o Monrovia
          o Nouakchott
          o Ouagadougou
          o Sao Tome
          o Danmarkshavn
          o Canary Islands
          o Faeroe
          o Reykjavik
          o St Helena
          o GMT (no daylight saving)
          o Dublin
          o Lisbon
          o London
    * GMT +01:00
          o Algiers
          o Bangui
          o Brazzaville
          o Ceuta
          o Douala
          o Kinshasa
          o Lagos
          o Libreville
          o Luanda
          o Malabo
          o Ndjamena
          o Niamey
          o Porto-Novo
          o Tunis
          o Windhoek
          o Amsterdam
          o Andorra
          o Central European Time
          o Berlin
          o Brussels
          o Budapest
          o Copenhagen
          o Gibraltar
          o Luxembourg
          o Madrid
          o Malta
          o Monaco
          o Oslo
          o Paris
          o Rome
          o Stockholm
          o Tirane
          o Vaduz
          o Vienna
          o Warsaw
          o Zurich
    * GMT +02:00
          o Blantyre
          o Bujumbura
          o Cairo
          o Gaborone
          o Harare
          o Johannesburg
          o Kigali
          o Lubumbashi
          o Lusaka
          o Maputo
          o Maseru
          o Mbabane
          o Tripoli
          o Amman
          o Beirut
          o Damascus
          o Gaza
          o Jerusalem
          o Nicosia
          o Athens
          o Bucharest
          o Chisinau
          o Helsinki
          o Istanbul
          o Moscow-01 - Kaliningrad
          o Kiev
          o Minsk
          o Riga
          o Sofia
          o Tallinn
          o Vilnius
    * GMT +03:00
          o Addis Ababa
          o Asmera
          o Dar es Salaam
          o Djibouti
          o Kampala
          o Khartoum
          o Mogadishu
          o Nairobi
          o Syowa
          o Aden
          o Baghdad
          o Bahrain
          o Kuwait
          o Qatar
          o Riyadh
          o Moscow+00
          o Antananarivo
          o Comoro
          o Mayotte
          o (GMT+03:30) Tehran
    * GMT +04:00
          o Baku
          o Dubai
          o Muscat
          o Tbilisi
          o Yerevan
          o Moscow+01 - Samara
          o Mahe
          o Mauritius
          o Reunion
          o (GMT+04:30) Kabul
    * GMT +05:00
          o Aqtau
          o Aqtobe
          o Ashgabat
          o Dushanbe
          o Karachi
          o Tashkent
          o Moscow+02 - Yekaterinburg
          o Kerguelen
          o Maldives
          o (GMT+05:30) India Standard Time
          o (GMT+05:30) Colombo
          o (GMT+05:45) Katmandu
    * GMT +06:00
          o Mawson
          o Vostok
          o Almaty
          o Bishkek
          o Dhaka
          o Moscow+03 - Omsk, Novosibirsk
          o Thimphu
          o Chagos
          o (GMT+06:30) Rangoon
          o (GMT+06:30) Cocos
    * GMT +07:00
          o Davis
          o Bangkok
          o Hovd
          o Jakarta
          o Moscow+04 - Krasnoyarsk
          o Phnom Penh
          o Hanoi
          o Vientiane
          o Christmas
    * GMT +08:00
          o Casey
          o Brunei
          o Choibalsan
          o Hong Kong
          o Moscow+05 - Irkutsk
          o Kuala Lumpur
          o Macau
          o Makassar
          o Manila
          o China Time - Beijing
          o Singapore
          o Taipei
          o Ulaanbaatar
          o Western Time - Perth
    * GMT +09:00
          o Dili
          o Jayapura
          o Pyongyang
          o Seoul
          o Tokyo
          o Moscow+06 - Yakutsk
          o Palau
          o (GMT+09:30) Central Time - Adelaide
          o (GMT+09:30) Central Time - Darwin
    * GMT +10:00
          o Dumont D'Urville
          o Moscow+07 - Yuzhno-Sakhalinsk
          o Eastern Time - Brisbane
          o Eastern Time - Hobart
          o Eastern Time - Melbourne, Sydney
          o Guam
          o Port Moresby
          o Saipan
          o Truk
    * GMT +11:00
          o Moscow+08 - Magadan
          o Efate
          o Guadalcanal
          o Kosrae
          o Noumea
          o Ponape
          o (GMT+11:30) Norfolk
    * GMT +12:00
          o Moscow+09 - Petropavlovsk-Kamchatskiy
          o Auckland
          o Fiji
          o Funafuti
          o Kwajalein
          o Majuro
          o Nauru
          o Tarawa
          o Wake
          o Wallis
    * GMT +13:00
          o Enderbury
          o Tongatapu
          o Kiritimati
    

    提前谢谢

    7 回复  |  直到 16 年前
        1
  •  4
  •   Community Mohan Dere    9 年前

    时区信息的综合来源是 Olson list . 它在Unix世界中被广泛使用,也可以以python的形式提供 pytz . 似乎有人创造了 some code 这使得它也可以在javascript中使用,如中所述 an older SO question .

    这似乎正是你想要的;)

        2
  •  1
  •   IanR    16 年前
        3
  •  1
  •   Assaf Lavie    16 年前

    由于时区基本上只是添加一些小时整数,所以从UTC时间到本地化时间的转换非常简单。

    所以我想你真正需要的是列出所有的城市/国家和它们各自的时区…还是我误解了?

    你到底需要完成什么?

        4
  •  1
  •   Mr. Shiny and New 安宇    16 年前

    我应该指出,DST时间规则不断变化,在某些国家,它们每年都在变化。我会尝试在服务器端解决这种方法,但如果这不可能,我会考虑使用Ajax回调服务器,以获取用户的当前时间或DST偏移量。维护自己的时区和区域规则更改列表将是一件麻烦的事情,尤其是在必须部署它的情况下。但是,如果您有一个区域规则数据库,那么实际实现该库应该是微不足道的。

        5
  •  1
  •   this. __curious_geek    16 年前

    这里有一个非常富有的 javascript library 'DateJs' -它还支持日光节约。

    http://www.datejs.com/

        6
  •  0
  •   Dave Anderson    16 年前

    您可以将时间标记为UTC并提供类似的内容;

    2010-01-01 00:00(UTC) get time locally

    www.worldtimeserver.com似乎没有可以使用的服务来指定位置,因此用户需要选择自己的服务。你可以订阅时区数据库,但那是每年400美元。

        7
  •  0
  •   James Skidmore    16 年前

    似乎你想要的是一份夏令时规则清单。因此,这里列出了观察DST的国家及其观察方式:

    http://www.timeanddate.com/time/dst2009.html