0

我在 NodeJS 上有一个日期字符串

2019-02-25T09:00:00Z

我创建了一个时刻对象,并将时区设置为纽约

let a = moment.tz("2019-02-25T09:00:00Z", "America/New_York");

然后我创建另一个时刻对象,时间相同,但设置不同的地方,亚利桑那州

let b = moment.tz("2019-02-25T09:00:00Z", "America/Phoenix");

console.log(a.diff(b));

打印出 0 毫秒。我预计会得到 7200000(2 小时时差)。为什么我没有得到这种差异?

4

1 回答 1

3

“2019-02-25T09:00:00Z”表示“ UTC 时间2019 年 2 月 25 日上午 9 点”。“Z”部分表示该值采用 UTC。

您创建了两个值,表示同一时间,但位于两个不同的时区 - 所以它们将具有不同的本地值,但它们都表示同一时刻,因此它们之间的差异为 0。

如果您想创建一个表示“2019 年 2 月 25 日上午 9 点,在给定时区”的值,那么只需删除 Z。(如果您指定的值不明确或由于偏移而被跳过,我不知道 Moment 会做什么时区的变化,但如果您要使用任意数据执行此操作,您应该调查这一点。)

于 2019-02-23T13:58:29.547 回答