如何使用moment.js去除ISO时间字符串的毫秒数?
使用Moment.js统一ISO日期格式并做相等性比较
你完全不需要用字符串替换来处理,Moment.js可以直接指定格式生成和示例1完全一致的字符串,步骤如下:
- 解析任意ISO格式的日期字符串:Moment.js对标准ISO格式的日期兼容性很好,不管是带毫秒(如
2022-10-15T20:00:00.0459273Z)还是不带毫秒(如2022-10-15T20:00:00Z)的字符串,都能直接解析为Moment对象。 - 指定目标格式输出:使用Moment的
format()方法,传入自定义格式字符串"YYYY-MM-DDTHH:mm:ss[Z]",就能生成不带毫秒部分的UTC格式字符串,和示例1完全匹配。- 格式说明:
YYYY-MM-DD:年-月-日THH:mm:ss:分隔符T + 时:分:秒[Z]:直接输出字符Z(用方括号转义避免Moment将其解析为时区偏移量)
- 格式说明:
代码示例
// 解析两个不同格式的ISO日期 const date1 = moment("2022-10-15T20:00:00Z"); const date2 = moment("2022-10-15T20:00:00.0459273Z"); // 转换为目标格式 const formattedDate1 = date1.format("YYYY-MM-DDTHH:mm:ss[Z]"); const formattedDate2 = date2.format("YYYY-MM-DDTHH:mm:ss[Z]"); // 字符串相等性比较 console.log(formattedDate1 === formattedDate2); // 输出 true
额外说明
如果你的核心需求只是判断两个日期时间是否相等(不需要生成特定格式的字符串),可以直接用Moment的isSame()方法,指定精度到秒,更简洁:
console.log(date1.isSame(date2, 'second')); // 输出 true
内容的提问来源于stack exchange,提问作者MasterJoe
相关产品推荐
相关产品推荐

