如何将UTC(HH:MM)格式时间转换为本地时间 JavaScript实现方法
UTC时间转本地时间解决方案
核心逻辑是先拆分UTC时间的时分字段,结合时区偏移量计算小时数值,同时处理跨天边界即可,完整实现如下:
// 入参1:UTC时间字符串,格式为HH:MM;入参2:getTimezoneOffset换算后的小时差 function convertUtcToLocal(utcTimeStr, timeDifference) { // 拆分UTC的小时、分钟 const [utcHour, utcMinute] = utcTimeStr.split(':').map(Number) // 计算本地小时 let localHour = utcHour - timeDifference // 处理跨天的边界场景 if (localHour < 0) { localHour += 24 // 如需同步处理日期偏移,可在此处添加日期减1的逻辑 } if (localHour >= 24) { localHour -= 24 // 如需同步处理日期偏移,可在此处添加日期加1的逻辑 } // 补零格式化输出 const fillZero = num => num.toString().padStart(2, '0') return `${fillZero(localHour)}:${fillZero(utcMinute)}` } // 你的原有获取时差代码 const date = new Date(); let timeDifference = date.getTimezoneOffset() / 60; // 测试示例:API返回的UTC时间为13:29,山地夏令时场景下timeDifference为6 const result = convertUtcToLocal('13:29', timeDifference) console.log(result) // 输出 07:29
注意事项
getTimezoneOffset的符号逻辑不要搞反:该API返回的是UTC时间比本地时间快的分钟数,比如UTC-6的山地夏令时场景,返回值为360,除以60得到的timeDifference为6,直接代入上面的函数计算即可,不需要额外修改符号。- 如果需要同时转换日期,可以在处理小时跨天的时候同步修改日期数值即可。
内容的提问来源于stack exchange,提问作者Tony Ingle
相关产品推荐
相关产品推荐

