1. 如果获取两个日期差是需要Date( )方法的,最近发现Date()方法在IE8下并不友好,存在一些兼容性的问题。
下面介绍方法,计算两个日期差
//计算日期差函数,兼容IE8
function getDays(strDateStart,strDateEnd){
var strSeparator = "."; //2017.08.08 这里以.为分隔符
var oDate1; var oDate2; var iDays;
oDate1= strDateStart.split(strSeparator);
oDate2= strDateEnd.split(strSeparator);
var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);
var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
iDays = parseInt(Math.abs(strDateS - strDateE ) / (1000*24*3600))
return iDays ;
}
alert( getDays('2017.08.23',2017.08.13'')); //10
2. 上面的方法是一种,第二种是把日期格式转换一下,再用返回的日期进行处理。
function parseISO8601(dateStringInRange) {
var isoExp = /^\s*(\d{4}).(\d\d).(\d\d)\s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}
这样用转换后返回的日期在进行.getTime()等方法IE就能正常处理了
//计算两个日期相差天数
function getDays(vaildEDate,currentDate){
var sDate = parseISO8601(vaildEDate).getTime();
var eDate = parseISO8601(currentDate).getTime();
var iDays = parseInt((eDate - sDate)/(1000*60*60*24));
return iDays ;
}