如何将2021-11-26T23:19:00.000+11:00格式日期转换为MM/DD/YYYY HH:mm
问题原因
你的代码有3个核心错误导致解析结果异常:
- 你写的解析格式串外层多了冗余的单引号,moment会将单引号视为要匹配的文本内容,和你输入的日期格式不匹配,才会出现2026/11/01这种异常输出
- 解析格式里误用了
dd标识日期,moment中dd是星期缩写的格式符,标识日期应当用DD - 你输入的日期后缀是
+11:00时区偏移,不是Z标识的UTC时间,写死Z作为格式后缀会匹配失败。
直接调用moment(dateToBeFormatted)返回无效日期,一般是moment版本对带偏移的ISO格式自动解析存在兼容问题,或者你传入的dateToBeFormatted不是标准字符串类型。
解决方案
使用匹配输入格式的解析规则即可:
// 匹配带时区偏移的ISO 8601格式输入,输出MM/DD/YYYY HH:mm:ss格式 const formattedDate = moment(dateToBeFormatted, "YYYY-MM-DDTHH:mm:ss.SSSZ").format("MM/DD/YYYY HH:mm:ss");
如果你需要将时间转换为UTC时间输出,可添加utc()方法:
const formattedUtcDate = moment(dateToBeFormatted, "YYYY-MM-DDTHH:mm:ss.SSSZ").utc().format("MM/DD/YYYY HH:mm:ss");
如果仍出现无效日期错误,检查两点:
- 确认
dateToBeFormatted为字符串类型,不是Date对象或其他变量类型 - 确认moment包安装正常,导入路径无误
内容的提问来源于stack exchange,提问作者OrionSoftTechnologiesSydney
相关产品推荐
相关产品推荐

