我在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小时的时差)。为什么我没有得到这个差异?
“2019-02-25T09:00:00Z”表示“2019年2月25日上午9点,UTC”。 “Z”部分表示该值为UTC。
您创建了两个表示同一时刻的值,但是在两个不同的时区 - 因此它们将具有不同的本地值,但它们都表示相同的瞬间,因此它们之间的差异为0。
如果你想创建一个代表“在2019年2月25日上午9点,在给定时区内”的值,那么只需删除Z.(如果您指定的值不明确或由于偏移而跳过,我不知道Moment会做什么时区的变化,但如果您要使用任意数据进行此操作,那么您应该调查一下。)