You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复Safari和IE无效日期问题(规避UTC负时区失效)

Safari/IE日期兼容:仅替换日期部分短横线的解决方案

直接用全局替换replace(/-/g, "/")处理带UTC时区的日期时,会误把UTC-0500里的短横线也替换成斜杠,导致所有浏览器解析出无效日期。要解决这个问题,只需要精准替换**日期部分(开头的YYYY-MM-DD)**里的短横线,不碰时区部分的符号。

解决方案代码

const fixDateString = (dateStr) => {
  // 仅匹配开头的YYYY-MM-DD格式,替换其中的短横线为斜杠
  return dateStr.replace(/^(\d{4})-(\d{2})-(\d{2})/, '$1/$2/$3');
};

测试验证

  • 处理正时区日期:
    fixDateString('2022-11-30 17:00 UTC+0200') 
    // 输出:2022/11/30 17:00 UTC+0200
    
  • 处理负时区日期:
    fixDateString('2022-11-28 21:56 UTC-0500') 
    // 输出:2022/11/28 21:56 UTC-0500
    

原理说明

正则表达式^(\d{4})-(\d{2})-(\d{2})的作用:

  • ^ 锚定字符串开头,确保只匹配最前面的日期部分
  • (\d{4})-(\d{2})-(\d{2}) 捕获年、月、日三个部分,替换时用/连接这三个捕获组,完全保留时间和时区部分的原始格式,避免破坏时区标识。

内容的提问来源于stack exchange,提问作者Yohav Rn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:30:52