訪問者のタイムゾーン情報をどのように収集できますか?
両方必要です:
- タイムゾーン(例:ヨーロッパ/ロンドン)
- UTC または GMT からのオフセット (例: UTC+01)
ベストアンサー1
オフセットを使用してタイムゾーンを計算するのは間違ったアプローチであり、常に問題が発生します。タイムゾーンと夏時間のルールは 1 年の間に何度も変更される可能性があり、変更に対応するのは困難です。
システムのIANA タイムゾーンJavaScriptでは、
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)
2023年4月現在、この世界中で使用されているブラウザの95.42%で動作します。
古い互換性情報
ecma-402/1.0 では、timeZone
コンストラクターに提供されていない場合は未定義になる可能性があるとされています。ただし、将来のドラフト (3.0) では、システムのデフォルトのタイムゾーンに変更することでこの問題は修正されました。
このバージョンの ECMAScript 国際化 API では、コンストラクターに提供されたオプション オブジェクトにプロパティが指定され
timeZone
ていない場合、プロパティは未定義のままになりますtimeZone
Intl.DateTimeFormat
。ただし、将来のバージョンでは代わりにホスト環境の現在のタイム ゾーンを識別する文字列値が返される可能性があるため、アプリケーションはこれに依存しないでください。
ecma-402/3.0(まだ草案段階)では、次のように変更されました。
ECMAScript 2015 国際化 API のこのバージョンでは、コンストラクターに提供されたオプション オブジェクトにプロパティが指定され
timeZone
ていない場合、プロパティはデフォルトのタイム ゾーンの名前になります。以前のバージョンでは、この場合、プロパティは未定義のままでした。timeZone
Intl.DateTimeFormat
timeZone