使用moment.js将UTC小时时间转换为本地时间时返回原值问题求助
Moment UTC小时转本地小时失败问题排查
问题根因
你当前代码里的moment(selectedHour, "hh")默认会将传入的小时值识别为本地时区的时间,而非你预期的UTC时间,后续调用.local()不会触发任何时区转换,因此输出结果和原值一致。
修复方案
需要先通过moment.utc()方法指定输入的小时属于UTC时区,再转换为本地时间即可:
- 12小时制输出(和你原代码的格式要求对齐)
const selectedHour = "1"; const result = moment.utc(selectedHour, "hh").local().format('hh');
- 24小时制输出(如果需要适配24小时计时场景,替换格式符为
HH即可)
const selectedHour = "1"; const result = moment.utc(selectedHour, "HH").local().format('HH');
补充说明
如果需要同时输出上午/下午标识,可以在格式化参数中加入A,示例:
// 输出示例:09 AM 、 10 PM const result = moment.utc(selectedHour, "HH").local().format('hh A');
内容的提问来源于stack exchange,提问作者qweeee
相关产品推荐
相关产品推荐

