您的位置:首页 > Web前端 > JavaScript

关于new Date()方法在IE8下面无效的解决办法

2017-08-22 13:30 555 查看
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 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript