Momentjs无法获取时区之间的时差?

时间:2019-02-23 03:03:06

标签: timezone momentjs timezone-offset moment-timezone

我在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小时时差)。为什么我没有这种区别?

1 个答案:

答案 0 :(得分:3)

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

您已经创建了两个表示同一时间的值,但是在两个不同的时区-因此它们将具有不同的 local 值,但是它们都表示相同的时刻,因此两者之间的差异它们之间是0。

如果您要创建一个表示“ 2019年2月25日上午9点,在给定的时区”的值,则只需删除Z。(我不知道Moment会做什么由于时区中的偏移量变化,您指定的结果是模棱两可或已被跳过,但是如果您要对任意数据执行此操作,则应进行调查。)