簡體   English   中英

如果小時數小於 10,JavaScript 會在小時前顯示一個零

[英]JavaScript display hour with a zero before it if it is less than 10

使用時:

Date.toLocaleTimeString()

有什么辦法讓它顯示01:42:35 PM而不是1:42:35 PM嗎?

我試過添加這個:

Date.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit', second: '2-digit'})

但它仍然只產生一位數的小時(除非它是在 10 之后)。

如果我的閱讀是正確的,根據相關規范 ,這似乎是故意的。

  • 如果f是“2位數”,那么
    • 設fv為FormatNumber(nf2,v)。
    • 如果fv的length屬性大於2,則讓fv成為包含最后兩個字符的fv的子字符串。

我無法理解為什么會這樣指定,但確實如此。 如果你想做零填充,你似乎只需要自己添加它。

它以這種方式為我工作

var datelocal = new Date(2016, 01, 01, 1, 1, 1).toLocaleTimeString(navigator.language, {
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});

我還附上了一名傻瓜

注意 :您必須提供新的Date(),而不是將日期參數傳遞給Date方法以獲取當前日期。

我傾向於在我的JavaScript項目中使用Moment.js ,而不是依賴Date.prototype.toLocaleTimeString或類似的函數來獲得正確的格式。 Moment.js是一個JavaScript庫,專門用於解析,驗證,操作和顯示日期。 要以您描述的格式獲取時間字符串,您可以使用:

var s = moment().format('hh:mm:ss A');
console.log(s);

這使用當前日期。 如果你想使用另一個日期,你也可以這樣做:

var s = moment(new Date(2016, 8, 19, 1, 10)).format('hh:mm:ss A');
console.log(s);

它可以省去你自己的零填充和其他類似的東西的麻煩。

正確答案是使用“數字”而不是“2-digit”

 const options = {hour: 'numeric', minute: '2-digit', second: '2-digit'}; function ut() { let d = new Date(); document.getElementById('time').innerHTML = d.toLocaleTimeString('de-DE', options); } window.setInterval(ut, 1000);
 #time { font-size: 40px; text-align: center; white-space: nowrap; color: black }
 <div id="time"></div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM