解決した

コンピュータのTimeZoneを変更した後、ChromeがTimeZone名を正しく取得できない

フロントエンド

私は以下のようにjavascriptでスニペットコードを持っています:

$(document).ready(function () {    
    var day1 = new Date();
});

今度はブラウザを開きます(この場合はFireFoxを使用します)。コンピュータの現在のTimeZoneはUTC + 10:00ホバートです。 次に、 day1の javascript変数をデバッグモードで表示すると、その値が下の画像のように表示されます。 ここに画像の説明を入力

タイムゾーン名はUTC + 10:00ホバートタスマニア標準時です 。 FFは正しい名前と私の期待通りに得ます。

次に、 FFブラウザが開かれている間 、私のコンピュータ上のTimeZoneをUTC + 10:00キャンベラ、メルボルン、シドニー に変更します。 その後、Ctrl + F5を押してFFブラウザをリフレッシュし、 day1の値をデバッグモードでもう一度表示します。

ここに画像の説明を入力

ご覧のように、FFはAUS東部標準時として新しい正しいTimeZone名を更新しました。 それは私の期待通りに働いた。

MS EdgeとIEはFFと同じように機能しました。

しかし、クロムは別の方法で働いていました。

ここに画像の説明を入力

Chromeが私に返す新しいTimeZoneの名前は、AUS東部標準時ではなく、他のブラウザ(FF、MS Edge、IE)と同じように、 Local Daylight Timeです。

Chromeが「AUS東部標準時」の名前を返さないのはなぜですか?

このケースをChromeで解決できる方法はありますか?


Progress 100%

一番いい

回答

フロントエンド

残念ながら、タイムゾーン名の実装は標準化されていません。 ECMAScript仕様では、ベンダーが望むものにすることができます。 ブラウザ間だけでなく、ブラウザのさまざまなバージョンやオペレーティングシステム間でも違います。

あなたがやろうとしていることがユーザーのタイムゾーンを検出することであれば、タイムゾーン名をIANAタイムゾーンの識別子(たとえばAustralia/Sydney )として取得するための新しい標準があります。

Intl.DateTimeFormat().resolvedOptions().timeZone

ただし、まだすべてのブラウザで実装されているわけではありません。 あなたがここで読むことができるライブラリを推測することができます