我正在使用momentJs 将所有访问者的本地时间转换为UTC
visitor_utc = moment().utc().valueOf()
得到像这样的偏移
visitor_utc_offset = moment().utcOffset().valueOf() / 60
我希望有一个下拉列表,其中包含偏移量(…-01:00,+00:0,+01:00,+02:00…(,这样用户就可以更改和设置他的实际偏移量。默认选择的值将是visitor_utc_offset
有没有什么方法可以用动量Js得到偏移量的列表?
有了即时时区,就有可能做这样的事情:
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,但在当前时区,你不能!!
真奇怪!?
认识到时区与偏移量不同。
根据政府的突发奇想,时区会发生变化。夏令时的许多变化是定期、半定期或不定期的。一些人出于其他动机改变了基准偏移,比如萨摩亚跳到国际日期线的另一边。
如果您要求他们的当前偏移量,则不能保证您在任何给定时间点使用正确的偏置量。您不能只选择一个时间点并假设偏移量是特定用户的偏移量。
关于您的时刻代码,您只检查每个时区的当前偏移量。每个分区都有偏移量更改的历史记录,但列表中未对此进行说明。您可以检查每个分区条目中的offsets
数组以查看它们。
另请参阅时区标记wiki中的"时区!=偏移量"。
偏移下拉列表的唯一有效用途是创建日期-时间偏移选择器。也就是说,特定的日期和时间与特定的偏移量相关联。例如,可能有一个表单,其中显示了特定事件的本地日期、时间和偏移量。