JavaScript Temporal がやってくる
(developer.mozilla.org)- 概要
- JavaScript Temporal オブジェクトの実装が、ブラウザーの実験版で提供され始めている
- Web 開発者にとって日付と時刻の処理が大幅に簡素化され、モダンになる見込み
- スケジューリング、国際化、時間関連データを扱うアプリケーションで、効率的かつ正確な組み込み機能を利用可能
- JavaScript
Dateオブジェクトの問題点
- 1995 年の Java の初期
java.util.Date実装をコピーして作られた - ユーザーのローカル時刻と UTC のみをサポートし、タイムゾーンのサポートがない
- パースの挙動が非常に不安定で、可変(mutable)
- サマータイム(DST)や歴史的な暦変更の計算が難しい
- Temporal の主な機能
Dateオブジェクトの完全な代替として設計- タイムゾーンとカレンダー表現をサポート
- 200 を超えるユーティリティメソッドを提供
- 変換、比較、計算、フォーマットなど多様な機能を含む
- ブラウザー対応状況
- Firefox が現在もっとも成熟した実装を保有
- Firefox Nightly バージョンで実験的機能として提供
- Safari と Chrome も実装が進行中
- TC39 のドキュメントページで
@js-temporal/polyfillを通じて試すことができる
- 主要な構成要素
Duration: 2 つの時点の差Instant: タイムスタンプZonedDateTime: タイムゾーン付きの日付/時刻PlainDateTime: タイムゾーンなしの日付/時刻- このほかにも多様な日付・時刻関連クラスを提供
この新しい API は、JavaScript で日付と時刻を扱うためのモダンなアプローチを提供すると期待されています。
6件のコメント
遅すぎた気になる相手からの返信
最初のDate実装もJavaから持ってきて、Temporal実装もJavaのものをかなり持ってきたのに、だったらこんなに時間がかかることだったのかと思ってしまいます。
LocalDateTimeが入った Java 8 が2014年なのだから、これをベースにTemporal実装がもっと早く出ていれば、さまざまなサードパーティーライブラリに断片化される必要もなかったのではと思います。おお、どこかでよく聞いたような……
LocalDateTimeをPlainDateTimeに変えたことを除けば、Java とまったく同じような…。あれば便利ではあるけど… ここまでやることなのかは…。
これまでは、複数のタイムゾーンに応じた時間管理を行うにはライブラリを使ったり、基本的にさまざまな条件を考慮して実装したりする必要がありましたが、標準でサポートされる方向に進むのは良いですね