首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何解释日期构造函数中的差异?

如何解释日期构造函数中的差异?
EN

Stack Overflow用户
提问于 2015-04-17 21:07:43
回答 2查看 577关注 0票数 18

测试:

代码语言:javascript
复制
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());

结果是:

代码语言:javascript
复制
d1 = 956361600000
d2 = 958946400000

我认为不同之处在于时区,但我一点也不理解!

是什么神奇的东西造成了这种差异?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-17 21:12:52

最大的问题是,月份在Javascript中是0索引的,在创建第二个date实例时,4表示5月。此外,您的字符串还包括+00:00用于时区,即UTC/GMT。您的第二个没有提供时区信息,因此它将是本地时区。

如果您想要构造一个类似于您的UTC日期,您可以调用:

代码语言:javascript
复制
var d2 = new Date(Date.UTC(2000, 3, 22, 0, 0, 0, 0)); 
票数 12
EN

Stack Overflow用户

发布于 2015-04-17 21:09:56

您的ISO日期字符串具有明确的UTC时区,因此它被解释为UTC。第二个日期是用日期部分的数字参数构造的,构建日期的方法隐式地使用本地时区。

还要注意,日期字符串中的"4“表示”4月“,而第二个构造函数中的"4”表示“5月”:使用数字构造函数时,月份的编号从零开始,而不是从一开始。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29700099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档