Intl API を使用しています。 Chromeの場合:
Intl.DateTimeFormat().resolved.timeZone
「ヨーロッパ/ロンドン」を返します
Firefoxでは、 FirefoxはIntlをサポートしています であっても、これはundefined
を返します。
Firefoxでタイムゾーンを取得するにはどうすればよいですか?
技術的には、より正確な呪文は次のとおりです。
_Intl.DateTimeFormat().resolvedOptions().timeZone
_
残念ながら、現在すべての実装がIntl
APIのタイムゾーン機能をサポートしているわけではありません。そのため、これはChromeで有効なIANAタイムゾーンを返しますが、FireFoxや他のいくつかのブラウザではまだ返しません。
kangax Intl互換性テーブル は、この機能をresolvedOptions().timeZone defaults to the Host environment
というラベルの付いたDateTimeFormat
オブジェクトの下のサブアイテムとして示しています。
次のFireFox作業項目を参照してください。
それまでの間、2つの実行可能な選択肢があります。
moment.tz.guess()
が含まれていますゾーン。これらは両方とも、追加の推測アルゴリズムを試す前に、Intl
APIが使用可能で機能している場合、内部的に使用を試みることに注意してください。
また、ベストプラクティスは、タイムゾーンの検出/推測だけに依存するのではなく、タイムゾーンピッカーコントロールから適切なデフォルト値を選択するために使用することです。常にユーザーに希望のタイムゾーンを選択する方法を提供してください。現在コンピュータが設定されているタイムゾーンは、アプリケーション内で使用したいタイムゾーンである場合とそうでない場合があるため、これは重要です。たとえば、Webベースのカレンダーソフトウェア(GoogleカレンダーやOutlook.comなど)では、ユーザーがユーザープロファイルにタイムゾーンを設定できるようにするのが一般的です。