toLocaleTimeString() 总是显示前导零

sco*_*fer 2 javascript

我想将其显示为:4:26 PM

但我不断得到的是:04:26 PM

如果我删除的小时和分钟options距离toLocaleTimeString(),它的工作原理,但它也显示秒,这是我不想要的。

myClock();
function myClock() { 
    var d = new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});   
    document.getElementById("clock").innerHTML = d; 
}
setInterval(myClock, 1000);
Run Code Online (Sandbox Code Playgroud)
<div id="clock"></div>
Run Code Online (Sandbox Code Playgroud)

Dan*_*eck 6

您正在设置2-digit小时格式;听起来像你想要的numeric

myClock();
function myClock() { 
    var d = new Date().toLocaleTimeString([], {hour: 'numeric', minute:'2-digit'});   
    document.getElementById("clock").innerHTML = d; 
}
setInterval(myClock, 1000);
Run Code Online (Sandbox Code Playgroud)
<div id="clock"></div>
Run Code Online (Sandbox Code Playgroud)

  • @RobinMétral 我在 Windows10 上的 Chrome/Edge 或 IOS Safari 上没有看到前导零,但在 Firefox Windows10 上看到了它。 (2认同)
  • 是的,这正是我在这里学到的:不要指望确切地知道“toLocaleTimeString()”会产生什么(除非对语言环境进行硬编码)并相信“Intl.DateTimeFormat”。一个说明性示例:https://codesandbox.io/s/datetimeformat-locale-fun-fx4hf3?file=/src/index.js (2认同)