我使用moment-timezone v.0.5.3-2016c
库来计算时区的UTC偏移量:
var z = moment().tz("America/Los_Angeles");
z.utcOffset(); // -420 mins or -7 hours
// check if DST is shifted
z.isDSTShifted(); // false
但是这里https://en.wikipedia.org/wiki/List_of_tz_database_time_zones America/Los_Angeles
的UTC偏移是-8小时。
Moment也使用tzdb v.2016c和维基百科文章。
那么,为什么这里有两个不同的结果?哪个结果是对的?
P.S。:America/Kentucky/Monticello
和Europe/Tiraspol
也存在相同的差异。
答案 0 :(得分:2)
美国目前正处于夏令时(夏令时)。因此,我要使用显示UTC DST Offset
的{{1}}列。
答案 1 :(得分:2)
调用时刻创建函数,moment()
不带任何参数会返回当前时刻。由于时区偏移取决于它们所附加的日期和时间,因此结果将根据您调用此功能的时间而有所不同。
如果您想知道时间是否为夏令时,请使用isDST
。 isDSTShifted
函数用于处理无效的本地时间,而不是检查DST。它本可以被命名为更好。