考虑到不同的月份和闰年,有什么更优雅的方法来处理这种动态的日期差异呢?
发布于 2016-09-08 05:56:41
加上几天、几个月和几年是相当直接的。添加月份时,只需检查新月份中的日期是否与最初的月份相同,如果不是,则将日期设置为0(也就是说,您已经超过一个多月,因此将日期设置为前一个月的月底)。加年数也一样,但只会在二月份发生。例如。
function addMonths(date, months) {
var d = new Date(+date);
var startDate = d.getDate();
d.setMonth(d.getMonth() + months);
if (d.getDate() != startDate) d.setDate(0);
return d;
}
function addYears(date, years) {
return addMonths(date, years * 12);
}
var d = new Date(2016,4,31);
console.log(d.toLocaleString() + ' plus one month is \n' +
addMonths(d,1).toLocaleString());
d = new Date(2016,1,29);
console.log(d.toLocaleString() + ' plus one year is \n' +
addYears(d, 1).toLocaleString());
为了方便起见,您甚至可以将这些方法添加到Date.prototype中。
注意,日期算法不一定是对称的。
发布于 2016-09-08 05:55:59
你可以用香草js来做这个-
几个月来-
var d = new Date();
d.setMonth(d.getMonth() - x);多年来-
var d = new Date();
d.setYear(d.getYear() - x);几天来-
var d = new Date();
d.setDate(d.getDate() - x);https://stackoverflow.com/questions/39383308
复制相似问题