2021年1月1日负1天后,JavaScript日期对象未更新月份

时间:2020-09-03 08:20:37

标签: javascript

我有一个日期对象1/10/2021,当我将日期设置为负1时,它将返回31/10/2021

我希望这里是2021年9月30日。

这是我的模拟代码:

const _date = new Date(2021, 10, 1);
_date.setDate(_date.getDate() - 1);
console.log(_date) // Sun Oct 31 2021 00:00:00 GMT+0800 (Singapore Standard Time)

任何人都可以解释我的代码有什么问题吗?以及如何解决这种情况?在这个问题上,我真的需要您的帮助。

2 个答案:

答案 0 :(得分:3)

月份以0为索引。您的第一条声明将日期设置为11月1日。

const _date = new Date(2021, 10, 1);
console.log(_date) // Nov 1, 2021

此处有有关Date对象的更多文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

答案 1 :(得分:2)

月份的索引为0,因此您需要将10月份的索引更改为9。 或使用更直观的方法:

var _date = new Date('October 1 2021');

还可以考虑使用toString()方法。

var _date = new Date(2021, 9, 1);
_date.setDate(_date.getDate() - 1);
console.log(_date.toLocaleString());