我在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小时时差)。为什么我没有这种区别?
答案 0 :(得分:3)
“ 2019-02-25T09:00:00Z”表示“ 2019年2月25日上午9点, UTC ”。 “ Z”部分表示该值采用UTC。
您已经创建了两个表示同一时间的值,但是在两个不同的时区-因此它们将具有不同的 local 值,但是它们都表示相同的时刻,因此两者之间的差异它们之间是0。
如果您要创建一个表示“ 2019年2月25日上午9点,在给定的时区”的值,则只需删除Z。(我不知道Moment会做什么由于时区中的偏移量变化,您指定的结果是模棱两可或已被跳过,但是如果您要对任意数据执行此操作,则应进行调查。)