Temporal に入門してみた

2024-03-16

はじめに

Day.jsdate-fns を使ってきたのですが、どちらも微妙に使いづらいところがあると感じていて、新しい Temporal はどうなのかなと思って試してみました。

詳しい使い方はドキュメントを参照してください。このメモでは、使ってみた感想などをメインに書きます。

https://tc39.es/proposal-temporal/docs/

Temporal とは

Temporal は、Date に代わる ECMAScript の標準ライブラリになる予定の日付・時刻ライブラリです。

現在は Stage 3 で、まだ仕様が変更される可能性はあります。

感想

素直に分かりやすい作りで、良さそうだなと感じました。

ただし、ある程度タイムゾーン系の辛みが分かっていないと逆に分かりづらいかも、という気もしました。

例えば Temporal.Instant(タイムゾーンなし)と Temporal.ZonedDateTime が分かれているのは素直で良いなと思いました。

Instant だと年月日の加算とかができない、というのも良いです。
カレンダーやタイムゾーンに依存するので、ZonedDateTime とかじゃないと計算できないようになっています。

https://tc39.es/proposal-temporal/docs/instant.html#add

ライブラリとかだと、どういう挙動になるのかよくわからないこととかあった気がするので、こういう明示的に指定しないとできないの好きだなと思いました。
とはいえ、人によっては扱いづらいと思う人もいそうですね。

Temporal をラップしたライブラリとかも出てくるんだろうな。

この図も、どういう構造になっているのか分かりやすいです。

構造

まとめ

Temporal が Stage 4 になることを期待したい!