Chrome 67 と過去のタイム ゾーンの変更
最近の Chrome 67 アップデートで、開発者は以前の日付のタイム ゾーン処理で問題に遭遇しました。この記事は、このエラーに対処し、その影響を受ける開発者にガイダンスを提供することを目的としています。
問題の説明
new Date("1900-01-01T00 :00:00").getTimezoneOffset() を実行すると、Chrome 67 では -150 分のオフセットが観察されますが、Edge、Internet Explorer、Firefox などの他のブラウザでは常に -180 分が返されます。この不一致により、正確なタイム ゾーン情報に依存するコードで混乱とエラーが発生しました。
分析と解決策
他のブラウザと比較した Chrome 67 のタイム ゾーン オフセットの違いは次のとおりです。これは、基礎となるタイム ゾーン データが取得および処理される方法に起因します。 Chrome 67 は、IANA タイム ゾーン データベースのデータを使用しているようです。このデータベースは、タイム ゾーンの変更履歴に関するより詳細な情報を提供します。 IANA データベースによると、問題のタイム ゾーン (ヨーロッパ/モスクワ) の 1900 年のオフセットは 02:30:17 でした。Chrome はこれを 02:30 に切り捨て、オフセットは -150 分になります。
ただし、1970 年より前の日付については、データは「ベスト エフォート」であり、完全に正確ではない可能性があると IANA は明示的に述べています。したがって、1970 年より前の日付の正確なタイム ゾーン情報に依存することはお勧めできません。
この問題を軽減するには、開発者は 1970 年より前の日付で Date コンストラクターを使用しないことをお勧めします。代わりに、1970 年以降の日付に固執する必要があります。 Unix エポック (1970 年 1 月 1 日) です。この期間の IANA データは一般に信頼性が高いためです。正確な過去のタイムゾーン情報が不可欠な場合、開発者は代替データソースを探索する必要がある場合があります。
以上がChrome 67 が 1970 年より前の日付に対して異なるタイムゾーン オフセットを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。