目的:有些日期格式是2018-05-19T00:00:00.000+0000
这种,后面的+0000
代表补齐8小时,具体含义可以百度下,但是由于IE不支持这种,所以需要将其转换成通用的形式
思路:重写系统函数Date,给其封装一层来处理日期中带有+0000
格式的情况
代码:
(function(){
function isIE() {
if (!!window.ActiveXObject || "ActiveXObject" in window)
return true;
else
return false;
}
if(isIE()){
var IEDate = Date;
Date = function(){
IEDate.call(this);
var originArgs = [];
var args = [];
for(var i = 0; i < arguments.length; i ++){
originArgs.push(arguments[i]);
args.push('originArgs[' + i + ']');
}
if(args.length === 1 && typeof originArgs[0] === "string" && originArgs[0].endsWith('+0000')){
/** 解决IE不能兼容 +0000 时间格式的问题 **/
originArgs[0] = originArgs[0].replace('+0000', 'Z');
}
eval('var prototype = new IEDate(' + args.join(',') + ');');
return prototype;
}
Date.now = IEDate.now;
Date.parse = IEDate.parse;
Date.UTC = IEDate.UTC;
}
})();