こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

【JavaScript】時差を考慮して時刻を求める

javaScriptでブラウザを開いている国(タイムゾーン)と日本との時差を考慮して時刻を求めるメソッドを作りたいです。

例えば
・アメリカでブラウザを開いている場合。(時差を17時間とする)
メソッドの引数を”0:00”とした場合に"17:00"を算出。
”20:00”を引数をした場合に"13:00"を算出。

・中国でブラウザを開いている場合。(時差を1時間とする)
”0:00”を引数とした場合に"1:00"を算出。
”20:00”を引数をした場合に"21:00"を算出。

どのようにすればよいのでしょうか?
どうかよろしくお願いいたします。

投稿日時 - 2015-12-22 12:37:52

QNo.9099632

すぐに回答ほしいです

質問者が選んだベストアンサー

> 質問でも記述してあるように以下のような引数を時刻の文字列としたメソッドにできますでしょうか。
==========
function getJstTime(localTime){
times = localTime.split(":");
var date = new Date();
var tz = date.getTimezoneOffset();
tz += 540;
date.setHours(times[0])
date.setMinutes(times[1] + tz);
var retHours = ('0' + date.getHours()).slice(-2);
var retMinutes = ('0' + date.getMinutes()).slice(-2);
return retHours+":"+retMinutes;
}
==========
引数が正しくない時のエラー処理は書いてないので、適当に直して下さい。

投稿日時 - 2015-12-22 17:13:20

お礼

追加の質問にも回答して頂きありがとうございました。

投稿日時 - 2015-12-24 14:07:48

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

PCのタイムゾーンが正しく設定されている前提であれば、こんな感じでどうでしょう。
==========
var date = new Date();
var tz = date.getTimezoneOffset();
tz += 540;
date.setMinutes(date.getMinutes() + tz);
document.writeln(date)
==========
getTimezoneOffset() でローカルのタイムゾーンとUTCの差が取得できます。
返って来る値は分数で、日本の場合 -540 が返ってきます(何故かタイムゾーンの表記と正負が逆です)
getTimezoneOffset() の戻り値に 540 を足せばローカルタイムゾーンとJSTの時差(分差)が求められるので setMinutes() で現在時刻に分差を足してやれば、dateオブジェクトはJSTの時刻になります。

投稿日時 - 2015-12-22 14:45:05

補足

お早い回答ありがとうございます。
確かにdateオブジェクトはJSTの時刻になっていました。
ありがとうございます。

追加でお聞きしてもよろしいでしょうか。
質問でも記述してあるように以下のような引数を時刻の文字列としたメソッドにできますでしょうか。

function hege("20:00"){
     ?
return jpnTime ←"13:00"となる(タイムゾーンがアメリカの場合)
}

となるような処理です。
お時間ありましたら
どうかよろしくお願いいたします

投稿日時 - 2015-12-22 16:35:25

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-