javascript IE11时间格式化兼容

众所周知new Date() 方法中是可以携带参数的,然而~在各个浏览器下传递的参数格式是有要求的,不注意就会造成此浏览器下时间格式化没问题而其他浏览器出问题,本文记录一次IE11无法正常格式化时间的问题
时间日期控件:element datepicker (三个都用了三个保存的时间在不填写value-format的情况下是不一样的,本文出现问题就是因为这个事情,所以建议大家一开始就商量好与后台时间的对接格式,建议使用时间戳,转换方便,不会出错)
首先先附上网上找来的不同浏览器new Date 的识别情况
来源链接:https://www.cnblogs.com/cui-ting/p/10847384.html

只有字符串格式的"/"能正常解析,","和"-"都不能。
IE11不能正常解析的时间:2020-09-29T00:00:00.000+0800
处理方法:

dateFormat: function (date, fmt = 'YYYY-mm-dd') {
 
    if (!date) {
 
      return
 
    }
 
    if (date && typeof (date) === 'string' && date.indexOf('+0800') !== -1) {
 
      date = date.replace(/\+[\d]{4}/, '')
 
      console.log(date)
 
    }
 
    date ? date = new Date(Date.parse(date)) : date = new Date()
 
    let ret
 
    const opt = {
 
      'Y+': date.getFullYear().toString(), // 年
 
      'm+': (date.getMonth() + 1).toString(), // 月
 
      'd+': date.getDate().toString(), // 日
 
      'H+': date.getHours().toString(), // 时
 
      'M+': date.getMinutes().toString(), // 分
 
      'S+': date.getSeconds().toString() // 秒
 
      // 有其他格式化字符需求可以继续添加,必须转化成字符串
 
    }
 
    for (let k in opt) {
 
      ret = new RegExp('(' + k + ')').exec(fmt)
 
      if (ret) {
 
        fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
 
      }
 
    }
 
    return fmt
 
  }

原文链接:https://blog.csdn.net/star7783620/article/details/108843621

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容