首页 > 解决方案 > Javascript Date 对象未显示正确的月份

问题描述

我正在尝试使用 Javascript Date 对象来计算未来的日期(从今天起 3 个月)。然而我得到了意想不到的结果,具体来说,当加上 3 个月时,输出日期是 2025 年(对于时间旅行者来说,今年是 2018 年)!

做一个简单的 console.log 会返回一些意想不到的结果,如下所示:

var d = new Date();
console.log("Locale Time:"+ d.toLocaleDateString());
console.log("Month: "+d.getMonth());
d.setMonth(d.getMonth() + 3);
console.log("3 months from now: "+d.toLocaleDateString());

Returns:
// Note todays real date is 9 October 2018

Locale Time:10/9/2018 // This is correct
app.min.js:1 Month: 9 // No, the month is 10 (October)
app.min.js:1 3 months from now: 11/9/2025 // What? 

我究竟做错了什么?

标签: javascript

解决方案


参数monthIndex 是从0 开始的。这意味着一月 = 0 和十二月 = 11。所以你的代码可以是这样的:

var d = new Date();
console.log("Locale Time:"+ d.toLocaleDateString());
console.log("Month: "+d.getMonth());
d.setMonth(d.getMonth() + 4);
console.log("3 months from now: "+d.toLocaleDateString());

输出将是

> "Locale Time:10/9/2018"
> "Month: 9" (October = 9 as monthIndex starts from 0)
> "3 months from now: 2/9/2019"

推荐阅读