Moment.js无法按预期将指定时间转换为UTC格式求助
解决Moment.js时间转换不符合预期的问题
你的代码核心问题有两个:日期格式解析错误,以及可能的时区匹配问题,以下是具体解决方法:
1. 修正日期解析格式
你当前用MM/DD/YYYY(月/日/年)解析输入时间11/08/2023,但实际输入是日/月/年格式(8月11日),这直接导致解析出的日期本身错误,转UTC后结果自然不符合预期。
将解析格式改为DD/MM/YYYY HH:mm:ss即可修正日期部分的解析错误。
2. 匹配时区逻辑
目标UTC时间2023-08-11 16:33:07与输入时间11/08/2023 11:03:00的时差为5小时30分,说明你的输入时间是UTC-5:30时区的本地时间,转UTC时需要加上该时差。Moment.js默认会以当前运行环境的本地时区解析时间,只要你的环境时区是UTC-5:30,修正解析格式后就能得到正确的UTC时间。
修正后的代码
let ScheduledStartDate = "11/08/2023 11:03:00"; // 按日/月/年格式解析本地时间,再转换为UTC并格式化 let convertedDate = moment(ScheduledStartDate, "DD/MM/YYYY HH:mm:ss") .utc() .format("YYYY-MM-DD HH:mm:ss"); console.log(convertedDate); // 若你的本地时区是UTC-5:30,输出为:2023-08-11 16:33:00
额外说明
- 目标时间中的秒数
07如果不是笔误,需要确认原始时间字符串是否包含毫秒(比如11/08/2023 11:03:00.007),或者是否存在时区转换的精确计算差异。 - 如果输入时间本身就是UTC时间,而非本地时间,直接用
moment.utc()解析即可:let convertedDate = moment.utc(ScheduledStartDate, "DD/MM/YYYY HH:mm:ss") .format("YYYY-MM-DD HH:mm:ss");
内容的提问来源于stack exchange,提问作者Anandeva
相关产品推荐
相关产品推荐

