本分只简单实现了增加 月份 和 天数 的功能,减法功能暂时没做,读者可以自己简单实现。
年份的计算更简单,只需要看增减后是否为闰年,如果是闰年的话看看月份是否为二月,如果为二月的话看看日期是否为合理并相应地调整即可。
天数的加减我看了网上的大部分方法都不是很完美,考虑的都比较少,我暂时只用到了增加天数的部分,就只写了增加天数,这个版本减少天数会出现意想不到的结果,如有需要请评论。
为了方便我为String类型变量增加了endWith方法用来判断字符串结尾字符(M代表增减月份,Y代表增减年份,D代表增减天数)。
// 为String类型变量增加endWith方法用于判断字符串的结尾
String.prototype.endWith=function(endStr){
var d=this.length-endStr.length;
return (d>=0&&this.lastIndexOf(endStr)==d)
}
// 小于10的数字前加0
function formatSmallNum (num) {
var newnum = parseInt(num);
if (newnum<10) { // 调整日小于10时的格式
newnum = 0 + '' + newnum;
}
return newnum
}
var monthbs = [1,0,1,0,1,0,1,1,0,1,0,1] // 定义月份的大小
// 处理加减月时,当日大于28时,将新的日在新的月份中合理化
function adjustNewDay (newyear, newmonth, newday) {
var newAdjustedDay = newday;