[英]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.