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

使用Moment.js在Safari浏览器中遇无效日期问题求解决方案

Moment.js在Safari中解析日期返回无效日期的解决方案

问题背景

代码 moment('2023-05-23').format("YYYY-MM-DD"); 在Chrome、Firefox等浏览器中正常返回 2023-05-23,但在Safari 14.1.2版本中返回“无效日期”,使用的Moment.js版本为2.29.3。

问题原因

旧版Safari的原生Date对象对YYYY-MM-DD这种仅含日期的ISO格式解析存在兼容性缺陷,而Moment.js在未指定解析格式时,会依赖浏览器的原生日期解析逻辑,从而触发错误。

可行解决方法

  • 显式指定解析格式:调用Moment时传入第二个参数,强制使用指定规则解析,彻底规避浏览器差异

    const date = moment('2023-05-23', 'YYYY-MM-DD').format("YYYY-MM-DD");
    console.log(date); // 输出:2023-05-23
    
  • 补全UTC时间格式:将日期字符串扩展为完整的ISO 8601 UTC格式,旧版Safari可正确识别

    const date = moment('2023-05-23T00:00:00Z').format("YYYY-MM-DD");
    console.log(date); // 输出:2023-05-23
    
  • 升级Safari版本:新版本Safari已修复该日期解析兼容性问题,若环境允许升级是根治方案

测试代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment.min.js"></script>
<script>
// 测试方法一
const result1 = moment('2023-05-23', 'YYYY-MM-DD').format("YYYY-MM-DD");
console.log("显式指定格式结果:", result1);

// 测试方法二
const result2 = moment('2023-05-23T00:00:00Z').format("YYYY-MM-DD");
console.log("补全UTC格式结果:", result2);
</script>

内容的提问来源于stack exchange,提问作者Bhavya Ardeshana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:03:30