💡

日付表示の検討備忘録

2023/05/16に公開

JavaScriptで、日付や時刻の形式を変えたいときの方法をいくつか列挙してみました。

Intl.DateTimeFormat

Intl.DateTimeFormatは、ライブラリを使わなくてもタイムゾーンの指定が簡単にできる。これが一番なうなやり方っぽい。

Intl.DateTimeFormat

const date = new Date(Date.UTC(2023, 5, 16, 3, 23, 16, 738));
const formated = new Intl.DateTimeFormat('ja-JP').format(date)
> '2020/12/20'

一方で、ICU の Date/Time Format Syntaxに適していないようです。
Date/Time Format Syntax

toISOString

これだと、タイムゾーン指定できないよう。

new Date().toISOString();
> '2023-05-16T04:26:15.942Z'

Date.prototype.toISOString()

toLocaleDateString と toLocaleTimeString

toLocaleDateStringは、Dateオブジェクトの「日付」部を表す言語に依存した文字列を、toLocaleTimeStringは、日付の時間部分を言語に依存して表現した文字列を返します。

const date = new Date();
const dateString = `${date.toLocaleDateString("ja-JP", { timeZone: "Asia/Tokyo" })} ${date.toLocaleTimeString("ja-JP", { timeZone: "Asia/Tokyo" })}`
> '2023/5/16 13:47:53'

Date.prototype.toLocaleDateString()

Date.prototype.toLocaleTimeString()

参考

標準機能でDateをformatする色々(toLocaleString/Intl.DateTimeFormat/etc)

Intl.DateTimeFormat を使うときは気をつけないと50倍くらい遅くなるしメモリももりもり食う

Discussion