時刻表示をゼロパディングする方法
new Date(new Date().setHours(1,1)).toLocaleString('en',{ hour12:false, hour:'2-digit', minute:'2-digit' });
/*
01:01
*/
以下、余談
//日本語ロケールだと上手くいかない
new Date(new Date().setHours(1,1)).toLocaleString('ja',{ hour12:false, hour:'2-digit', minute:'2-digit' });
/*
1:01
*/
//時間だけにすると謎の挙動
new Date(new Date().setHours(1,1)).toLocaleString('ja',{ hour12:false, hour:'2-digit' });
/*
1時
*/
//12時間表記だとこう
new Date(new Date().setHours(1,1)).toLocaleString('ja',{ hour12:true, hour:'2-digit' });
/*
午前1時
*/
//いやあの、'numeric'ってお願いしましたよね?
new Date(new Date().setHours(1,1)).toLocaleString('ja',{ hour:'numeric' });
/*
1時
*/
なぜだろう、と思ってググって見たところ、このような話が。
In CLDR v28, Japanese simply doesn't have any 2-digit hour date formats
507037 - Date.toLocaleString ignores hour:2-digit setting - chromium - Monorail
「単純に日本語には2ケタ時のフォーマットがないみたい」
マジっすか。
<dateFormatItem id="h">aK時</dateFormatItem>
<dateFormatItem id="H">H時</dateFormatItem>
<dateFormatItem id="hm">aK:mm</dateFormatItem>
<dateFormatItem id="Hm">H:mm</dateFormatItem>
<dateFormatItem id="hms">aK:mm:ss</dateFormatItem>
<dateFormatItem id="Hms">H:mm:ss</dateFormatItem>
http://unicode.org/cldr/trac/browser/trunk/common/main/ja.xml#L1399
マジだわ……
なんか不思議な設定ですね。
そういうわけで。
時刻の日本語ロケールは怪しいので触らないほうが無難です。en
を使いましょう。