为什么在时刻时区可用的UTC偏移量与维基百科UTC列表不完全相同

时间:2015-07-05 13:39:31

标签: timezone momentjs timezone-offset

我正在使用momentJs将所有访问者本地时间转换为UTC

visitor_utc = moment().utc().valueOf()

并获得像这样的偏移量

visitor_utc_offset = moment().utcOffset().valueOf() / 60

我希望有一个下拉列表,其中包含偏移量(... -01:00,+ 00:00,+ 01:00,+ 02:00 ....),以便用户可以更改和设定他的实际偏差。默认选择的值为 visitor_utc_offset

是否有任何方法可以使用momentJs获取偏移列表?

使用时刻 - 时区可以做类似的事情:

for element in moment.tz.names()
    console.log moment.tz(element).format("Z")

但是它给出了一个带有冗余值的长列表(因为我只是格式化了可以具有相同偏移量的时区名称)

我还在维基百科中找到了一个列表List_of_UTC_time_offsets但我不确定它是否是一个完整的列表,并且它在未来是否可靠?

更新

为了比较时刻时区中使用的偏移列表和来自维基百科的偏移列表,我使用了这段代码:

  for element in moment.tz.names()
    if $.inArray( moment.tz(element).format("Z"), arr ) <= -1
      arr.push moment.tz(element).format("Z") 

这消除了所有双重条目,因此我得到了这样的数组:

["+00:00", "+03:00", "+01:00", "+02:00", "-09:00", "-08:00", "-04:00", "-03:00", "-05:00", "-06:00", "-04:30", "-07:00", "-02:00", "-02:30", "+08:00", "+07:00", "+10:00", "+11:00", "+05:00", "+12:00", "+06:00", "+05:30", "+09:00", "+04:00", "+04:30", "+05:45", "+06:30", "-01:00", "+09:30", "+08:45", "+10:30", "-10:00", "-11:00", "-12:00", "+13:00", "+14:00", "+12:45", "-09:30", "+11:30"]

此数组包含39个偏移,但在维基百科中有40个偏移

所以在找了一段时间之后,我发现在维基百科你可以找到偏移 +03:30 -03:30 ,但在当下 - 时区你不能!!

这很奇怪!?

1 个答案:

答案 0 :(得分:1)

识别时区与偏移量不同。

时区根据政府的想法改变抵消。许多人在常规,半定期或不定期的基础上改变夏令时。有些人已经改变其他动机的基准补偿,例如当萨摩亚跳到国际日期线的另一边时。

如果您要求当前偏移量,那么您无法确定在任何给定时间点使用正确的偏移量。您不能只选择一个时间点并假设偏移量是特定用户的 偏移量。

关于您的时刻代码,您只需检查每个时区的当前偏移量。每个区域都有一个偏移变化的历史记录,这在您的列表中没有说明。您可以检查每个区域条目中的offsets数组以查看它们。

另见&#34;时区!=偏移&#34;在the timezone tag wiki

用于下拉偏移的唯一有效用于创建日期时间偏移选择器。也就是说,特定日期和时间与特定偏移相关联。例如,可能有一个表单,其中发生特定事件的本地日期,时间和偏移量。