moment.js没有以不同的输入格式返回相同时区的相同输出

时间:2018-06-26 09:16:19

标签: javascript node.js datetime timezone momentjs

使用即时js库时出现问题。

let moment = require("moment-timezone")

date = '02/15/2018 5:00 PM'
fmt = 'MM/DD/YYYY hh:mm A'
timezone = 'America/New_York'

moment.tz(date, fmt, timezone) //Statement 1

Output> moment.parseZone(“ 2018-02-15T17:00:00.000-05:00”)

moment().tz(timezone) //Statement 2

Output> moment.parseZone(“ 2018-06-26T04:33:51.173-04:00”)

两个语句都使用相同的时区,但时差不同于UTC。 第一个显示5个小时的差异,第二个显示4个小时的差异。

如果我使用以下格式,那么它将显示正确的日期时间。

moment.tz({year:2018, month:2, day:15, hour:17}, timezone) //statement3

Output> moment.parseZone(“ 2018-03-15T17:00:00.000-04:00”)

我不明白为什么语句1没有给出正确的日期时间。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

差异是因为第一个日期是夏令时以外的2月,而第二个日期是夏令时内的6月。因此,每个日期的UTC偏移分别是-5和-4小时。

请记住,大多数时区的UTC偏移量会随一年中的时间而变化,从不假定您代码中的固定偏移量。