2010-07-06 89 views
3

您好,我在我的web应用程序中有一个典型的需求,我必须填写一个包含所有系统时区的下拉框,并设置从客户端浏览的选定时区。如何通过java脚本查找系统区域时区名称

只有timezoneoffset的是不足以处理这种suituation,因为有两个原因 1.最新的操作系统具有相同的多于一个时区偏移 2.如果日光节约启用或禁用(可检测从Javascript)抵消将有所不同。

是在Java脚本中处理这个问题的方法吗?

+1

我不相信有什么办法可以找出你想知道的。我也不明白为什么它很重要;无论如何,'getTimezoneOffset'报告的偏移量是非常重要的。为了配置站点首选项,时区偏移为来自选择列表的默认选择提供了一个很好的开始猜测,然后用户可以直接提供信息。 – Pointy 2010-07-06 12:53:35

+0

此请求的主要原因记录在用户将从中央服务器获取来自各个地区的报告。用户在报告之前必须注意他们自己的时区,选择正确的时区。如果用户选择了错误的报告,则报告将被归一化到不同的时区。 – Dharma 2010-07-06 13:18:56

回答

0
+0

我阅读了那篇文章,并试图使用每个时区偏移量启用或禁用DST。如果我们从操作系统中引用时区,则会有更多时区名称具有相同的偏移量,例如(GMT + 2:00),我有9个条目,以确定其中一个是我的查询。 – Dharma 2010-07-07 11:33:41

+0

这对报告没有任何影响,因为时区是地球上的一个区域,或多或少受到经线的限制,您有9个条目属于同一经度线。重要的是夏令时(这就是为什么在文章中你只能找到2个条目(GMT +2:00)。(UTC + 02:00 - DST:True)安曼,雅典,布加勒斯特,伊斯坦布尔,贝鲁特,开罗,赫尔辛基,基辅,里加,索非亚,塔林,维尔纽斯,耶路撒冷,明斯克,温得和克。 (UTC + 02:00,DST:False)比勒陀利亚哈拉雷 – 2010-07-07 12:36:46

1

简短回答: 使用此开源JavaScript项目:jsTimezoneDetect。它基于MK在这里链接的代码,这很好,但是不够,因为同一时区内的不同地区在不同时间开始夏令时。半球也是一个因素。

长答案: 一个例子是-07:00 UTC时区,它基本上有三个子时区。

  • 美国山地标准时间(无日光节约时间......这是亚利桑那州)
  • 美国山区标准时间(日光节约)
  • 墨西哥山区标准时间(日光节约)

假设你知道你的用户的UTC抵消,你现在必须检查你的时区是否使用夏时制。创建一个一月和一个六月的日期并检查这两个日期。如果UTC偏移量不同,则表示您处于夏令时的时区。假设您已确定您的用户是夏令时的-07:00,即美国山地时间(美国/丹佛)或墨西哥山区时间(美国/奇瓦瓦州)。如何区分他们?那么,他们开始夏令时的日期有所不同。

美国夏令时开始于2011年3月13日开始,墨西哥4月4日开始。因此,从丹佛开始,检查3月13日是夏季,不是吗?好的,检查4月4日是夏令时。是?答对了。