momentjs 无法获取时区之间的时差吗?

is momentjs incapable of getting time differences between time zones?

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

2019-02-25T09:00:00Z

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

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

然后我创建另一个 moment 对象,时间相同,但设置不同的地方,arizona

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

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

打印出 0 毫秒。我希望得到 7200000(2 小时时差)。为什么我看不到这种差异?

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

您创建了两个代表同一时刻的值,但在两个不同的时区 - 因此它们将具有不同的 local 值,但它们都代表相同的瞬间,所以它们之间的差异是0.

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