私の JavaScript レイヤーtimestamp
では、UTC形式の を受信しています。これをローカル タイムゾーンに変換する必要があります。Java 側を使用してタイムゾーンを変換できることは知っていますがDateFormat
、JavaScript のみを使用して信頼できる方法を探しています。
どんな提案でも大歓迎です。
私の JavaScript レイヤーtimestamp
では、UTC形式の を受信しています。これをローカル タイムゾーンに変換する必要があります。Java 側を使用してタイムゾーンを変換できることは知っていますがDateFormat
、JavaScript のみを使用して信頼できる方法を探しています。
どんな提案でも大歓迎です。
getTimezoneOffset()を使用する
ローカル UTC オフセットを取得し、ミリ秒に変換します
localOffset = d.getTimezoneOffset() * 60000;
getTimezoneOffset() からの負の戻り値は、現在の場所が UTC より進んでいることを示し、正の値は場所が UTC より遅れていることを示します。
現地時間に現地時間帯のオフセットを追加して、現在の UTC 時間を取得します。(getTime() から取得する localTime)
// obtain UTC time in msec
utc = localTime + localOffset;
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 日からのミリ秒数で表されます。明らかに、これはあまり読みにくいため、さらにいくつかの計算を行う必要があります。
新しい Date() オブジェクトを初期化して、オブジェクトの toLocaleString() メソッドを呼び出すことにより、前のステップで計算された時間値を人間が読める日付/時刻文字列に変更します。
// convert msec value to date string
nd = new Date(mumbai);
document.writeln("Mumbai time is " + nd.toLocaleString() + "<br>");
そして、あなたは完了です!