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

Moment格式化标准日期字符串返回'invalid date'原因咨询

报错原因
  • 输入字符串不符合严格ISO 8601格式要求:你提供的输入值2021-11-2T10:20:00+01:00中,日期段的日为单数字2,严格ISO 8601规范要求月、日必须为两位补零格式,对应位置应为02。如果该字符串是Moment.js生成的,说明生成时使用的格式符用了代表单数字日的D,而非代表两位日的DD。
  • Moment.js默认解析逻辑容错性低:未指定解析格式时,Moment.js首先会尝试按照严格ISO 8601规则解析字符串,解析失败后会 fallback 到浏览器原生Date接口解析,不同浏览器的原生日期解析规则存在差异,很容易返回无效日期对象。
修复方案

方案1:统一输入字符串格式

将输入字符串的日补为两位,调整为2021-11-02T10:20:00+01:00即可直接正常解析。

方案2:解析时指定匹配的格式规则

如果无法修改输入的源字符串,调用Moment时主动传入和输入格式匹配的解析规则即可:

const input: string = '2021-11-2T10:20:00+01:00';
// 格式参数中用M匹配1/2位月份、D匹配1/2位日期,Z匹配时区
const dateIns = moment(input, 'YYYY-M-DTHH:mm:ssZ', true);
const date: string = dateIns.format('YYYY-MM-DD');
const time: string = dateIns.format('HH:mm');

第三个参数true代表开启严格解析,避免Moment自动容错导致不符合预期的解析结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:04