代码如下,功能描述见注解。
实例:
1. dateOperate('2020-12-16', 2, -5, 12) // 计算 2020-12-16日期,加上2年,减去5个月,再加12天后的日期
2. dateOperate('2020-12-16', 0, 0, 15) // 计算 2020-12-16日期,加15天后的日期
/**
* 格式化日期字符串运算操作
* strDate 格式化日期
* year 加/减 year年
* month 加/减 month月
* day 加/减 day日
**/
function dateOperate(strDate, year, month, day) {
// 格式化日期转日期对象
var dateTime = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/, function (a) {
return parseInt(a, 10) - 1;
}).match(/\d+/g) + ')');
// 日期对象加year年(year为负数表示减year年)
dateTime = new Date(dateTime.setFullYear(dateTime.getFullYear() + year));
// 日期对象加month月(month为负数表示减month月)
dateTime = new Date(dateTime.setMonth(dateTime.getMonth() + month));
// 日期对象加day日(day为负数表示减day日)
dateTime = new Date(dateTime.setDate(dateTime.getDate() + day));
return getFormatDate(dateTime);
}
// 日期对象转格式化字符串(yyyy-MM-dd)
function getFormatDate(date) {
var year = date.getFullYear();
var month = (date.getMonth() + 1).toString();
var day = (date.getDate()).toString();
if (month.length == 1) {
month = "0" + month;
}
if (day.length == 1) {
day = "0" + day;
}
var dateTime = year + "-" + month + "-" + day;
return dateTime;
}