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

Moment.js解析特定日期时间格式返回‘Invalid date’的问题及解决方法咨询

解决Moment.js解析"MM/DD/YYYY HH:MM:SS A"格式失败的问题

哈哈这个坑我踩过!你的代码解析失败其实是因为格式字符串里的两个错误,严格模式(第四个参数true)下Moment对格式匹配要求非常严格,一点点不对就会返回无效日期:

问题出在这两个格式符上:

  1. HH和A冲突:HH是Moment里的24小时制小时标识(范围00-23),而A是AM/PM的12小时制标识,这两个放在一起逻辑矛盾,解析器直接判定无效。
  2. MM和SS用错:MM是月份的标识,分钟应该用mm;SS不是秒的标识,秒需要用小写的ss(大写SS是毫秒的标识)。

修正后的代码

把格式字符串改成MM/DD/YYYY hh:mm:ss A就可以正常解析了:

var someday = moment("09/08/2022 05:46:00 PM", "MM/DD/YYYY hh:mm:ss A", "en-US", true);
someday.isValid(); // 现在会返回true
console.log(someday.format()); // 输出类似"2022-09-08T17:46:00+08:00"(取决于你的时区)

补充一下关键格式符的区别

为了避免再踩坑,记清楚这几个常用的时间格式符:

  • 小时:HH(24小时制,00-23)、hh(12小时制,01-12)
  • 月份:MM(两位数字,01-12)
  • 分钟:mm(两位数字,00-59)
  • 秒:ss(两位数字,00-59)
  • 上午/下午:A(大写,AM/PM)、a(小写,am/pm)

因为你开启了严格模式,所以格式必须和输入字符串完全对应,包括大小写,这也是为什么之前仅解析日期部分能成功——那部分的格式符是正确的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:39:08