javascript日期对象的奇怪行为。无法创建正确的日期

时间:2016-01-27 19:56:05

标签: javascript

当我运行下面的代码时:

var d = new Date(1958, 12, 23);
console.log(d.getFullYear()); 
console.log(d.getMonth());
console.log(d.getDate());

它返回错误的年份和月份。它跳到1959年。

为什么?

2 个答案:

答案 0 :(得分:4)

Because months are 0 indexed.

尝试跑步:

var d = new Date(1958, 11, 23);
console.log(d.toDateString()); // Tue Dec 23 1958

答案 1 :(得分:2)

对于月份,您需要设置如下:

d = new Date(1958, 12 - 1, 23);

因为月份为0 based index

最终代码

var d = new Date(1958, 12 - 1, 23);
console.log(d.getFullYear()); 
console.log(d.getMonth() + 1);
console.log(d.getDate());

控制台预览