为什么 javascrpit 计算日期相差天数,要这样写?

来源:百度知道 编辑:UC知道 时间:2024/05/17 02:16:28
//计算天数差的函数,通用
function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2002-12-18格式
var aDate, oDate1, oDate2, iDays;
aDate = sDate1.split("-");
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]); //转换为12-18-2002格式
aDate = sDate2.split("-");
oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24); //把相差的毫秒数转换为天数
return iDays;

这里是因为,如果直接2002-12-18转换成Date型的话,会报错,因为new Date()不支持yyyy-mm-dd这种格式,所有做了转换,但是这种转换方法太费劲。它用的是new Date('mm-dd-yyyy')这种格式来进行转换,其实有更简单的,就是用new Date('yyyy/mm/dd')这种来进行。使用的时候也简单

new Date(str.split("-").join("/"));
这样就可以直接用了。

function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2002-12-18格式
var aDate, oDate1, oDate2, iDays;
oDate1 = new Date(sDate1.split("-").join("/"));//转换为2002/12/18格式
oDate2 = new Date(sDate2.split("-").join("/"));
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24); //把相差的毫秒数转换为天数
return iDays;