はじめに ナノ秒精度の RFC3339 文字列を Web ブラウザの JavaScript で扱っていて予想外の挙動をするケースがありました。 一部のブラウザ (確認した範囲では WebKit のみ) では以下の挙動をします。 new Date("2022-12-31T23:59:59.999999999Z").toISOString() // => "2023-01-01T00:00:00.000Z" 冷静に考えると Date はミリ秒精度を扱うので、それを超える精度を扱おうとした際に予想外の挙動になるのは当然とも言えますが、この件について仕様を確認した結果などを書き残しておきます。 Date コンストラクタに与える日付文字列の仕様 MDN の JavaScript リファレンスにおける Date() コンストラクター のページには、引数に日付文字列を与えた際の挙動について記載されていま