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

2021-04-13  本文已影响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;
           }
上一篇下一篇

猜你喜欢

热点阅读