1

私の JavaScript レイヤーtimestampでは、UTC形式の を受信して​​います。これをローカル タイムゾーンに変換する必要があります。Java 側を使用してタイムゾーンを変換できることは知っていますがDateFormat、JavaScript のみを使用して信頼できる方法を探しています。

どんな提案でも大歓迎です。

4

1 に答える 1

1

getTimezoneOffset()を使用する

  1. ローカル UTC オフセットを取得し、ミリ秒に変換します

    localOffset = d.getTimezoneOffset() * 60000;
    

    getTimezoneOffset() からの負の戻り値は、現在の場所が UTC より進んでいることを示し、正の値は場所が UTC より遅れていることを示します。

  2. 現地時間に現地時間帯のオフセットを追加して、現在の UTC 時間を取得します。(getTime() から取得する localTime)

    // obtain UTC time in msec
    utc = localTime + localOffset;
    
  3. UTC 時刻を取得したら、宛先都市の UTC オフセットを時間単位で取得し、ミリ秒に変換して UTC 時刻に追加します。

    // obtain and add destination's UTC time offset
    // for example, Mumbai(India) 
    // which is UTC + 5.5 hours
    offset = 5.5;   
    mumbai = utc + (3600000*offset);
    

    この時点で、変数 mumbai には、インドのムンバイ市の現地時間が含まれています。この現地時間は、1970 年 1 月 1 日からのミリ秒数で表されます。明らかに、これはあまり読みにくいため、さらにいくつかの計算を行う必要があります。

  4. 新しい Date() オブジェクトを初期化して、オブジェクトの toLocaleString() メソッドを呼び出すことにより、前のステップで計算された時間値を人間が読める日付/時刻文字列に変更します。

    // convert msec value to date string
    nd = new Date(mumbai); 
    document.writeln("Mumbai time is " + nd.toLocaleString() + "<br>");
    

そして、あなたは完了です!

于 2012-12-26T13:38:43.723 に答える