今天,做一个小功能,确定一个实际验收日期(date),然后再确定一个免费维护期(年),然后用来计算免费维护截止日期,开始免费维护其要求是正数,想想,挺简单,先将日期用split截取,然后加到年份上,再拼接
var dateArr=date.split("-");
var year=parseInt(dateArr[0])+y;
var finalDate=year+"-"+dateArr[1]+"-"+dateArr[2];
接着,过了一会,告诉我这个免费维护其得支持两位小数,还想用拼接试一下,整数部分加到年份上,小数部分乘12加到月份上,剩下乘以30(每月按30天算)加到天上,接着一想就傻眼了,这样还得判断日期是不是超过当月最大天数,月份是不是超过12...各种判断,只能看看JS中Date对象的一些函数,看有没有类似功能的,什么都没找到,不过看到getTime()函数的时候,到想到个办法,就是把日期和年份值都转换成毫秒,想加之后再转换成日期
顺便扩展了一下,可以支持月份和天数
function dateAdd(y,type,date){
var second=0;
if(typeof(date)=="string"){
var date=new Date(Date.parse(date));
second=date.getTime();
}
else if(typeof(date)=="object")
second=date.getTime();
var ySecond=0;
if(type=="y")
ySecond=parseFloat(y)*365*24*3600*1000;
else if(type=="m")
ySecond=parseFloat(y)*30*24*3600*1000;
else
ySecond=parseFloat(y)*24*3600*1000;
second+=ySecond;
var finalDate=new Date(second);
return finalDate.toLocaleDateString();
}