ソフトウェア

JavaScriptの日付と時刻の管理を大きく簡素化する「Temporal」の実装作業が進行中



JavaScriptには「Date」という時刻を表すためのオブジェクトがありますが、タイムゾーンの扱いが難しかったり、APIが直感的ではなかったりするなどの問題がありました。こうした問題を解決した新たな時刻表示用オブジェクト「Temporal」が登場し、ブラウザへの実装作業が進められています。

JavaScript Temporal is coming | MDN Blog
https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/


JavaScriptのDateオブジェクトは、JavaScriptが1995年に作成された際にJavaの「java.util.Date」の実装をコピーして作成され、30年間同じAPIが使われ続けてきました。Dateはユーザーのローカル時刻とUTC(世界協定時)をサポートするものの、それ以外のタイムゾーンを扱うのは困難で、時刻の解析動作の信頼性も高くありませんでした。そのため、多くの開発者は日付と時刻を適切に処理するためにMoment.jsdate-fnsなどの専用ライブラリを使用していました。

今回登場する「Temporal」オブジェクトはDateオブジェクトを完全に代替するように設計されており、タイムゾーンやカレンダーの表現、変換、比較と計算、書式設定など多くの組み込みメソッドをサポートしています。


Temporalはこうした強力な機能をサポートするため、記事作成時点で複数のクラスと200以上のメソッドが用意されています。一見複雑に見えるものの、Temporalのクラスは以下の3つに大きく分けられるとのこと。

◆1:期間を表す
Temporal.Durationは、2つの時点の差を示すためのオブジェクトです。年月日および時間で表示される点は普通の時刻と同じですが、負の数をとる場合があるという違いがあります。

◆2:歴史上のある瞬間を特定する
Temporal.ZonedDateTimeは日付・時刻にタイムゾーンの情報が含まれているため歴史上の一点を示す事が可能です。また、単純なタイムスタンプが必要な場合はTemporal.Instantを使用すれば良いとのこと。

◆3:日付・時刻を表す
Temporal.PlainDateTimeを使うと年月日および時、分、秒、ミリ秒、ナノ秒という完全な時刻を表すことができます。PlainDateTimeにタイムゾーンの情報を追加するとZonedDateTimeに相当するとのこと。

加えて、現在の時刻をさまざまな形式で取得するためのメソッドが「Temporal.Now」オブジェクトに多数用意されています。


また、TemporalではAPIの混乱しがちな仕様が修正されています。Dateでは月を設定したり表示したりする際、1月を「0」とし、12月を「11」とする仕様でしたが、Temporalでは見た目通り1月を「1」、12月を「12」として表示・設定可能です。その他、Temporalオブジェクトは全て変更不可のため、予期せぬ副作用によるバグが発生しなくなりました。

Temporalのブラウザへの実装は記事作成時点で作業中となっています。Chrome・Firefox・Safariという3大ブラウザへの実装作業の進行状況は以下のページで確認できるとのことです。

・Chrome
Implement the Temporal proposal [42201538] - Chromium

・Firefox
1912757 - Build temporal in Nightly by default

・Safari
223166 – [JSC] Implement Temporal

この記事のタイトルとURLをコピーする

・関連記事
「Safariの日付を選ぶ仕組み」がカスタマーサポートに寄せられる苦情の3分の1を生み出していたという報告 - GIGAZINE

「JavaScript」の商標を持つOracleが商標の開放を求められるも「自主的に取り下げるつもりはない」と拒否 - GIGAZINE

ブラウザ上でデバッグするときに使えるテクニック - GIGAZINE

MinifyされたJavaScriptのコードをChatGPTで読みやすい形式に戻すことに成功 - GIGAZINE

実際にユーザーが体験するウェブサイトの読み込み時間を計測できるオープンソースライブラリ「Boomerang」を使ってみた - GIGAZINE

in ソフトウェア, Posted by log1d_ts

You can read the machine translated English article Work is underway to implement 'Temporal,….