今天在工作时需要在js中实现日期计算,如果采用最原始的计算方式,需要对天数、月份等进行判断,非常麻烦,然后百度时看到大神写的方法,很好用,借鉴地址如下:
https://www.cnblogs.com/zangdalei/p/4948812.html;
https://blog.csdn.net/Somnus_Sunshine/article/details/54344688?locationNum=5&fps=1;
下面是我自己的代码:
<script type="text/javascript">
$('#field9518').change(function() {
var beginTimeVal=$('#field38244').val();//获取页面中的付款时间,格式为2017-01-11类型
// date='"'+beginTimeVal+'"'; //拼接字符串【如果不拼接会被当做减法运算,传入的结果就为2005】这个步骤我在用的时候注释掉了,我在用的时候加上这一步会报错,具体原因应该取决于从页面获取时间时该时间的格式
days=$("#field9507").text().trim();//获取页面中的冲账期限(天)val()
days1=$("#field9518").val();//获取页面中的延期天数
daysInt=parseInt(days)+parseInt(days1);//强制转换为int类型【不转换不会报错但是时间不准确】
var val=addDate(beginTimeVal,daysInt);//调用已经封装好的函数addDate $('#nextTime').val(val); })
$("#field9508span").html(val);
$("#field9508").val(val);
});
//日期加减法 date参数为计算开始的日期,days为需要加的天数
//格式:addDate('2017-1-11',20)
function addDate(date,days){
var d=new Date(date);
//核心就是setDate()方法, date参数是要进行加减的日期,days参数是要加减的天数,如果往前算就传入负数,往后算就传入正数 ,注意js中的月份是0-11月,计算的时候要加1
d.setDate(d.getDate()+days);
var m=d.getMonth()+1;
return d.getFullYear()+'-'+m+'-'+d.getDate();
}
</script>