测试:
var d1 = new Date("2000-04-22T00:00:00+00:00");
var d2 = new Date(2000, 4, 22, 0, 0, 0, 0);
console.log("d1 = " + d1.getTime());
console.log("d2 = " + d2.getTime());
结果是:
d1 = 956361600000
d2 = 958946400000
我认为不同之处在于时区,但我一点也不理解!
是什么神奇的东西造成了这种差异?
发布于 2015-04-17 21:12:52
最大的问题是,月份在Javascript中是0索引的,在创建第二个date实例时,4表示5月。此外,您的字符串还包括+00:00用于时区,即UTC/GMT。您的第二个没有提供时区信息,因此它将是本地时区。
如果您想要构造一个类似于您的UTC日期,您可以调用:
var d2 = new Date(Date.UTC(2000, 3, 22, 0, 0, 0, 0));
发布于 2015-04-17 21:09:56
您的ISO日期字符串具有明确的UTC时区,因此它被解释为UTC。第二个日期是用日期部分的数字参数构造的,构建日期的方法隐式地使用本地时区。
还要注意,日期字符串中的"4“表示”4月“,而第二个构造函数中的"4”表示“5月”:使用数字构造函数时,月份的编号从零开始,而不是从一开始。
https://stackoverflow.com/questions/29700099
复制相似问题