【发布时间】:2018-06-26 09:16:18
【问题描述】:
我在使用 moment 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
输出> moment.parseZone("2018-02-15T17:00:00.000-05:00")
moment().tz(timezone) //Statement 2
输出> 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
输出> moment.parseZone("2018-03-15T17:00:00.000-04:00")
我无法理解为什么声明 1 没有给出正确的日期时间。
感谢您的帮助。
【问题讨论】:
-
纽约在冬季是UTC-5,在夏季是UTC-4。见daylight saving time。
-
但是为什么语句 1 和语句 3 在解析相同的日期时间时分别给出 UTC-5 和 UTC-4。
-
第一个是解析,第三个是使用月份为零索引的构造函数。请注意最终输出:2 月 15 日在 1 日和 3 月 15 日在 3 日。
-
区别在于第一个日期是二月,在夏令时之外,而第二个日期是六月,在夏令时之内。所以UTC偏移量分别是-5和-4。
-
感谢@Phylogenesis
标签: javascript node.js datetime timezone momentjs