• ベストアンサー

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

javaScriptでブラウザを開いている国(タイムゾーン)と日本との時差を考慮して時刻を求めるメソッドを作りたいです。 例えば ・アメリカでブラウザを開いている場合。(時差を17時間とする) メソッドの引数を”0:00”とした場合に"17:00"を算出。 ”20:00”を引数をした場合に"13:00"を算出。 ・中国でブラウザを開いている場合。(時差を1時間とする) ”0:00”を引数とした場合に"1:00"を算出。 ”20:00”を引数をした場合に"21:00"を算出。 どのようにすればよいのでしょうか? どうかよろしくお願いいたします。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

> 質問でも記述してあるように以下のような引数を時刻の文字列としたメソッドにできますでしょうか。 ========== 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; } ========== 引数が正しくない時のエラー処理は書いてないので、適当に直して下さい。

alleniverson3
質問者

お礼

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

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.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の時刻になります。

alleniverson3
質問者

補足

お早い回答ありがとうございます。 確かにdateオブジェクトはJSTの時刻になっていました。 ありがとうございます。 追加でお聞きしてもよろしいでしょうか。 質問でも記述してあるように以下のような引数を時刻の文字列としたメソッドにできますでしょうか。 function hege("20:00"){      ? return jpnTime ←"13:00"となる(タイムゾーンがアメリカの場合) } となるような処理です。 お時間ありましたら どうかよろしくお願いいたします

関連するQ&A