如何让PST时间显示为完整24小时制格式(00:00:00)?
解决PST时间小时数前导零缺失问题
你的脚本已经能正常显示PST时间,但0-9点的小时数缺少前导零,且你尝试的补零函数未生效——核心问题是没调用该函数处理小时变量h,另外还要注意UTC-8可能出现负数小时的情况,以下是修正后的完整方案:
修正后的完整代码
function startTime() { const today = new Date(); let h = today.getUTCHours() - 8; let m = today.getUTCMinutes(); let s = today.getUTCSeconds(); // 处理UTC小时小于8时出现的负数,转成24小时制的正确数值 h = (h + 24) % 24; // 对小时、分钟、秒统一调用补零函数 h = checkTime(h); m = checkTime(m); s = checkTime(s); document.getElementById('txt').innerHTML = `${h}:${m}:${s}`; setTimeout(startTime, 1000); } function checkTime(num) { // 数值小于10时自动补前导零 return num < 10 ? `0${num}` : num; }
关键修正点
- 补全小时的补零处理:之前只对分钟和秒调用了
checkTime,漏掉了小时变量h,添加h = checkTime(h)后,0-9点的小时会自动转为00-09格式。 - 修复负数小时问题:当UTC时间在00:00到07:59之间时,
UTC-8会得到负数(比如UTC 0点时h=-8),通过(h + 24) % 24可将其转换为前一天的16点到23点,避免出现-08:00:00这类错误格式。 - 优化字符串拼接:用ES6模板字符串替代加号拼接,代码更简洁易读。
内容的提问来源于stack exchange,提问作者Don Rodriguez
相关产品推荐
相关产品推荐

