美文网首页
苹果浏览器 时间格式 兼容问题的坑

苹果浏览器 时间格式 兼容问题的坑

作者: 前端人 | 来源:发表于2021-04-13 12:17 被阅读0次

    很多人知道如下写法来兼容苹果浏览器,但是其实这个写法也是有问题的

      function praseTime(time){
     let date = new Date(time.replace(/-/g,'/'))
     return date;
     };
    

    因为 像这样的时间格式 2009-12-28T00:00:00.000+00:00 用/替换-后,是无法再转换为Date的。
    如图

    image.png

    最后还有一个坑 date == 'Invalid Date'是不全面的,有时候date会NaN;我现在无法重现了。但是调试代码中的确遇到过这个辛苦

       date = new Date(time)
      if (date == 'Invalid Date') return time;// date == 'Invalid Date'是不全面的,有时候date会NaN
    

    最后给一个非常完美的字符串转Date对象的函数

     /**
       * 字符串转成Date对象
        * @param {String} time 时间字符串
             * @returns Date
        */
          function strToDate(time) {
               if (!time) {
               return new Date();
                }
    
              if (time instanceof Date) {
                  return time;
                }
           if (typeof time === "number") {
             return new Date(time);
          }
          if (typeof time !== "string") {
             return new Date();
            }
    
            let date = new Date(time);
            if (isNaN(date.getDay())) {
            /**考虑是苹果浏览器不兼容的情况 */
                   date = new Date(time.replace(/-/g, "/"));
                      /**还是NaN 考虑是不合法的时间字符串 */
                     if (isNaN(date.getDay())) {
                        return new Date();
                  }
                    }
    
                return date;
               }
    

    相关文章

      网友评论

          本文标题:苹果浏览器 时间格式 兼容问题的坑

          本文链接:https://www.haomeiwen.com/subject/sbgqlltx.html