お久しぶりです。
お恥ずかしながら最近になって知ったのですが、JSでDate型のフォーマットに簡単なやり方があったので、ここでご紹介。
もちろん、ライブラリを使うなんて手もあるんですが、このためだけに入れるのも馬鹿らしい。
だいたい、時間がたって開発者がいなくなれば、なんのライブラリだかわからないけど入れておく、なんてふざけた状態になりかねない。
Date型から年月日時分秒をそれぞれ取る?
わざわざ2桁で0埋め?めんど。
というわけで、こちら
toLocaleString
何ができるかというと、指定したロケールに合わせた書式で返却する関数です。
引数がない場合は、クライアントの環境に従うっぽいです。
基本サンプル
d.toLocaleString()
d.toLocaleString(“en-US”)
d.toLocaleString(“ja-JP”)
書式
更に、第2引数に書式をセットできます。
なお、今回はja-JPをロケールに指定していますが、これはグレゴリオ歴になります。
完全な和暦に対応する場合は、ロケール識別子ja-JPの後ろに、-u-ca-japaneseの拡張キーを指定しましょう。
グレゴリオ暦:ja-JP
和暦:ja-JP-u-ca-japanese
年月日の0埋め
d.toLocaleString(“ja-JP”, {
year: “numeric”, month: “2-digit”, day: “2-digit”
})
year: “numeric”, month: “2-digit”, day: “2-digit”
})
年月日時分秒の0埋め
d.toLocaleString(“ja-JP”, {
year: “numeric”, month: “2-digit”, day: “2-digit”,
hour: “2-digit”, minute: “2-digit”, second: “2-digit”
})
year: “numeric”, month: “2-digit”, day: “2-digit”,
hour: “2-digit”, minute: “2-digit”, second: “2-digit”
})
その他オプション
- hour12
- true, false で「時」の表示形式を12/24時 表記を指定
- 例)1時/13時
- era
- “narrow”, “short”, “long” で「時代」の表示形式を指定
- 例)AD、西暦(日本語だとshortとlongはどちらも西暦)
- 和暦指定した場合は、R/令和 となります。
- year
- “numeric”, “2-digit” で「年」の表示形式を指定
- 例)2023年/23年
- month
- “numeric”, “2-digit”, “narrow”, “short”, “long” で「月」の表示形式を指定
- 例)1月/01月/1月(日本語だとnarrow,short,longすべて同じ)
- day
- “numeric”, “2-digit” で「日」の表示形式を指定
- 例)1日/01日
- weekday
- “narrow”, “short”, “long” で「曜日」の表示形式を指定
- 例)月/月曜日(日本語だとnarrowとshortは同じ)
- hour
- “numeric”, “2-digit” で「時」の表示形式を指定
- 例)1時/01時
- minute
- “numeric”, “2-digit” で「分」の表示形式を指定
- 例)1分/01分
- second
- “numeric”, “2-digit” で「秒」の表示形式を指定
- 例)1秒/01秒
- timeZoneName
- “short”, “long” で「タイムゾーン名」の表示形式を指定
- 例)JST/日本標準時
注意点
各オプションは、単一で指定する場合と複数組み合わせる場合とで結果が異なります。
例)year:”年”か”/”
単一指定:2023年
組合せ指定:2023/01/01
例)timeZoneName:年月日時分秒が自動で出力されるかどうか
単一指定:2023/6/10 9:05:00 JST
複数指定:10時 JST
区切り文字
日本語では、”/”区切りが標準なので、取得にreplaceしましょう。
中にはもともと”-“区切りの言語もあるようですが、どうせ後で見てなんのこっちゃ!ってなるでしょ。
頼むから素直にreplaceしてくれ。。。
d.toLocaleString().replace(“/”, “-“)
これだけなのでサンプルは割愛しますねm(_ _)m
コメント