🕰
toLocaleStringでISOに近いフォーマットにしたいときはlocaleをsv-SEにする
こちらの記事で下記のような形でtoLocaleString
を利用すると割と扱いやすいことを紹介した
> new Date().toLocaleString("ja-JP")
'2020/9/19 22:29:16'
しかしja-JP
の場合、月のフォーマットが二桁で無く一桁になってしまう。これは機械的に扱う場合にちょっと厄介だ。
そこでISO 8601に近い二桁になるフォーマットが無いか調べると、スウェーデンのlocaleであるsv-SE
があることを発見した
> new Date().toLocaleString("sv-SE")
'2020-09-19 22:29:46'
タイムゾーンは無いものの、確かにスッキリしている。スウェーデン最高。
利用例
例えばこんな具合にreplaceを組み合わせると色々とフォーマットが使えて便利
> new Date().toLocaleString("sv-SE", { timeZone: "Asia/Tokyo" })
.replace(/[^0-9]/g,"")
'20200919223442'
> new Date().toLocaleString("sv-SE", { timeZone: "Asia/Tokyo" })
.replace(/:/g,"_")
.replace(/\s/,"+")
'2020-09-19+22_40_02'
参考
Discussion