版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/70247257
该代码函数实现的功能是,在给定日期的基础上增加固定月份后的日期,注意增加的是自然月。
例如:
2001-01-28、2001-01-29、2001-01-30、2001-01-31 增加一个月后,得到的结果都应该是 2001-02-28
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>增加月份</title>
</head>
<body>
<script language='javascript' charset='gb2312'>
/**
* 计算给定日期增加N个自然月后的日期
*
* @param dtstr 给定日期,格式 2016-01-30
* @param n 需要增加的月数
* @returns
*/
function addmulMonth(dtstr, n) { // n个月后
var s = dtstr.split("-");
var yy = parseInt(s[0]);
var mm = parseInt(s[1] - 1);
var dd = parseInt(s[2]);
var dt = new Date(yy, mm, dd);
dt.setMonth(dt.getMonth() + n);
if ((dt.getFullYear() * 12 + dt.getMonth()) > (yy * 12 + mm + n)) {
dt = new Date(dt.getFullYear(), dt.getMonth(), 0);
}
var year = dt.getFullYear();
var month = dt.getMonth() + 1;
var days = dt.getDate();
var dd = year + "-" + month + "-" + days;
return dd;
}
// 下面是测试代码
document.write("2000-1-31 增加1个月后的日期为:" + addmulMonth("2000-1-31", 1)
+ "<br/>");// 加一个月
document.write("2000-2-29 增加12个月后的日期为:" + addmulMonth("2000-2-29", 12)
+ "<br/>");// 加一年
document.write("2000-1-31 增加3个月后的日期为:" + addmulMonth("2000-1-31", 3)
+ "<br/>");// 加一季度
document.write("2000-2-29 增加6个月后的日期为:" + addmulMonth("2000-2-29", 6)
+ "<br/>");// 加半年
document.write("2000-2-29 增加9个月后的日期为:" + addmulMonth("2000-2-29", 9)
+ "<br/>");// 加三个季度
/**
* 基于今天为基准,计算增加或减少指定天数后的日期
*
* @param addDayCount 增加或减少的天数(正数或负数)
* @returns 计算后的日期
*/
function getDateStr(addDayCount) {
var dd = new Date();
dd.setDate(dd.getDate() + addDayCount);// 获取addDayCount天后的日期
var y = dd.getFullYear();
var m = dd.getMonth() + 1;// 获取当前月份的日期
var d = dd.getDate();
return y + "-" + m + "-" + d;
}
document.write("前天:" + getDateStr(-2));
document.write("<br />昨天:" + getDateStr(-1));
document.write("<br />今天:" + getDateStr(0));
document.write("<br />明天:" + getDateStr(1));
document.write("<br />后天:" + getDateStr(2));
document.write("<br />大后天:" + getDateStr(3));
</script>
</body>
</html>