javascript减去一个月返回,当月日为31时,当月的第一天
通常我从当前日期减去一个月,如下所示:javascript减去一个月返回,当月日为31时,当月的第一天,javascript,date,Javascript,Date,通常我从当前日期减去一个月,如下所示: //assuming today is 2018-05-30T09:50:05.345Z var d = new Date; console.log(d); // return : 2018-05-30T09:50:05.345Z d.setUTCMonth( d.getUTCMonth() -1 ); console.log(d); //return : 2018-04-30T09:50:05.345Z 但是假设,今天是本月31号,这已经不起作用了
//assuming today is 2018-05-30T09:50:05.345Z
var d = new Date;
console.log(d);
// return : 2018-05-30T09:50:05.345Z
d.setUTCMonth( d.getUTCMonth() -1 );
console.log(d);
//return : 2018-04-30T09:50:05.345Z
但是假设,今天是本月31号,这已经不起作用了。。。例:
//assuming today is 2018-05-31T09:54:23.850Z
var d = new Date;
console.log(d);
// return : 2018-05-31T09:54:23.850Z
d.setUTCMonth( d.getUTCMonth() -1 );
console.log(d);
//return : 2018-05-01TT09:54:23.850Z
不是将日期设置为上个月,而是将日期设置为每月的第一天(与d.setMonth(d.getMonth-1)相同)
我遗漏了什么?当你放置静态值,比如
dateObj.setUTCMonth(4);
它显示的是相同的,即2018-05-01
但是如果我们放置var dateObj=new Date();dateObj.setUTCMonth(dateObj.getUTCMonth()-1,30);console.log(dateObj);
有效。这是JS问题。如果你想使用相同的代码,你需要检查月内的天数,然后执行条件基代码。你没有遗漏任何东西,这只是指定的方式。你可能需要查看(源代码)moment.JS,它的处理方式与普通JavaScript不同。