2024-03-16
Day.js や date-fns を使ってきたのですが、どちらも微妙に使いづらいところがあると感じていて、新しい Temporal はどうなのかなと思って試してみました。
詳しい使い方はドキュメントを参照してください。このメモでは、使ってみた感想などをメインに書きます。
https://tc39.es/proposal-temporal/docs/
Temporal は、Date に代わる ECMAScript の標準ライブラリになる予定の日付・時刻ライブラリです。
現在は Stage 3 で、まだ仕様が変更される可能性はあります。
素直に分かりやすい作りで、良さそうだなと感じました。
ただし、ある程度タイムゾーン系の辛みが分かっていないと逆に分かりづらいかも、という気もしました。
例えば Temporal.Instant
(タイムゾーンなし)と Temporal.ZonedDateTime
が分かれているのは素直で良いなと思いました。
Instant
だと年月日の加算とかができない、というのも良いです。
カレンダーやタイムゾーンに依存するので、ZonedDateTime
とかじゃないと計算できないようになっています。
https://tc39.es/proposal-temporal/docs/instant.html#add
ライブラリとかだと、どういう挙動になるのかよくわからないこととかあった気がするので、こういう明示的に指定しないとできないの好きだなと思いました。
とはいえ、人によっては扱いづらいと思う人もいそうですね。
Temporal をラップしたライブラリとかも出てくるんだろうな。
この図も、どういう構造になっているのか分かりやすいです。
Temporal が Stage 4 になることを期待したい!