我有一个代码,我正在测试两个日期之间的差异。为了得到旧日期,我正在做以下事情
var oldDate = new Date();
oldDate.setMonth(oldDate.getMonth() - 5);
但是monthsOldDate
正在返回别的东西,而不是五个月大的日期,为什么今天这种行为很奇怪呢?我该如何解决这个问题?
答案 0 :(得分:3)
这是因为它是第31个。
当您使用参数setMonth()
调用-2
方法时,它会将日期设置为2017年11月31日。这不是实际日期,因此会转换为2017年12月1日。
有关此行为的说明,请参阅last paragraph of the Description
section。
答案 1 :(得分:1)
尝试从Javascript Date()对象添加或减去月份时 这是一个月的结束日期,JS自动提前您的日期 如果结果日期不存在,则反对下个月的第一个日期 在这个月。
我建议使用像momentjs这样的库
您可以通过
执行此操作var monthsOldDate = moment().subtract(6, 'months');
console.log(monthsOldDate.month()) //will log 10 (November)
monthsOldDate = monthsOldDate.set("month", monthsOldDate.month())
console.log(monthsOldDate.format("Do MMMM YYYY")) //30th November 2017