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

使用Moment.js转换指定格式日期字符串生成无效日期,如何解决?

问题排查与解决

嘿,我一眼就发现问题所在啦!你在Moment.js的格式字符串里用错了关键的格式符~

错误原因

在Moment.js的格式规则里,大写的MM是用来匹配月份的(比如01代表1月),而你要匹配的是时间里的分钟,得用小写的mm;另外规范来说,秒数的格式符应该是小写的ss(虽然如果你的秒数是两位数字,用SS不会直接导致无效,但不符合Moment的格式规范)。

你的原代码里用了HH:MM:SS,这会让Moment把字符串里的分钟部分当成月份来解析,自然就生成了无效日期。

修正后的代码

把格式字符串里的MM改成mm,SS改成ss就可以了:

const date = moment(stringDate, 'YYYY-MM-DD HH:mm:ss');
console.log(date);

额外小技巧

  1. 你可以用date.isValid()来快速验证解析后的日期是否有效:
    console.log(date.isValid()); // 返回true表示解析成功
    
  2. 如果需要转换成原生JavaScript Date对象,可以调用date.toDate():
    const nativeDate = date.toDate();
    

关键格式符回顾(避免再踩坑)

  • YYYY:4位完整年份(如2024)
  • MM:两位月份(01-12)
  • DD:两位日期(01-31)
  • HH:24小时制的小时(00-23)
  • mm:两位分钟(00-59)
  • ss:两位秒数(00-59)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:16:45