🍩
JavaScriptでゼロパディングする
日付の表示で1桁の月や日の場合に、01
や09
のように0埋めして表示したいときのメモ。
slice
を使うもの
「JavaScript 日時 0埋め」で検索するとよく出てくるDate().getMonth()
で取得した月に0をつけてslice(-2)
で右から2文字を取得すればよいというもの。
- 1桁月の場合、05となりそこから
slice()
で右から2文字を取得するので、05
が取得できる - 2桁月の場合、012となりそこから
slice()
で右から2文字を取得するので、12
が取得できる
const monthNum1 = new Date(2021,5).getMonth() + 1;
const monthNum2 = new Date(2021,11).getMonth() + 1;
console.log(('0' + monthNum1).slice(-2));
console.log(('0' + monthNum2).slice(-2));
ちょっとパッと見でわかりにくい気がする。
padStart
を使う
個人的には上記より直感的で好みだったのでこちらを採用しました。
const monthNum1 = new Date(2021,5).getMonth() + 1;
const monthNum2 = new Date(2021,11).getMonth() + 1;
console.log(monthNum1.toString().padStart(2, "0")); // 05
console.log(monthNum2.toString().padStart(2, "0")); // 12
Discussion
これmonthNum1は5(05)じゃなくて6(06)じゃありませんか?仕様を誤解していました、ご放念ください。