javascript - 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?
我究竟做错了什么?
解决方案
参数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"
推荐阅读
- python - 如何有效地计算python中的离散概率?
- html - 图片背后的移动菜单
- r - R Markdown - PDF 输出中绘图旁边的说明
- javascript - 如何在页面中使用(允许)cookie?Javascript
- flutter - 在 GetX 内部分支的正确方法是什么?
- azure-devops - Azure Devops - 无法构建从 vs2017-win2016 到 windows-latest 的管道代理
- spring-boot - 如何在 SpringBoot 中创建 Bean
- reactjs - React:如何在我的 JSX 中使用 API 调用的结果?(范围问题)
- javascript - 使用 Graphql 装饰器的自定义装饰器
- java - 如何解决 java.lang.ClassCastException:net.sf.json.JSONObject 无法转换为 net.sf.json.JSONObject