记一次兼容IE无法解析 2019-01-01T00:00:00.000+0000 格式 时间的统一处理


目的:有些日期格式是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;
  }
})();

你可能感兴趣的:(记一次兼容IE无法解析 2019-01-01T00:00:00.000+0000 格式 时间的统一处理)