• ベストアンサー

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

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

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5078/13271)
回答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% (5078/13271)
回答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

  • BASIC言語で時差を求めるには?

    日本とアメリカ合衆国との時差を14時間としたとき、日本での時刻を入力するとアメリカ合衆国の時刻を算出するサブルーチンを作りたいのですが、どのようにプログラムを記述すればよいのでしょうか? 途中までのプログラムは作成してみました。 どなたかご教示していただけるとありがたいです。 100 rem 日本と米国の時差の計算 110 input "24時間表示で時間、分を入力してください。" ;h,m 120 gosub 150 130 goto 110 140 end 149 rem サブルーチン 150

  • JavaScriptで決まった「時刻」にページを移動するには?

    JavaScriptで決まった「時刻」にページを移動するには? お世話になります。 JavaScriptを使い、こちらが決めた時刻に自動的に 指定したページに切り替わりようにすどのようにすれば良いのでしょうか? 例:20時45分に現在のページから「page02.html」に移動する。 <script language="JavaScript" type="text/javascript"> <!-- var time = 45; function setTimer(){ setTimeout("location.replace( './page02.html')", time * 60 * 1000); } //--> </script> 自分なりに「setTimeout」「location.replace」を使って作ってみました。 移動する動作はリアルタイムで見られて良いのですが、 この場合、ページを開いてから45分後に移動してしまう為 指定した時刻での移動とはなりません。 「setTimeout」を使うのが間違っているような気がしますが、 他にどのようなメソッドを使ってよいのか分からない状態です。 必要に迫られJavaScriptを勉強し始めたばかりで分からないことだらけで 途方に暮れております。 ご指導よろしくお願いします。

  • アメリカとの時差

    こんにちは。 時差についてお聞きします。 アメリカの9:00から21:00までの12時間は、日本の何時から何時に相当しますか? アメリカには確かみっつのゾーンがあったと思いますが。

  • javascript、指定時刻での画像切換について

    こんにちは。 javascriptで、時刻を指定して 2/1 10:00~10:30と2/2 11:00~11:30はAの画像、(複数の時間帯で) それ以外はBの画像というように画像を切り替えたいのですが うまくいかずに困っています。 どのような記述をすればいいでしょうか? また、この時刻というのはどこを基準とした時刻になるのでしょうか? (閲覧者の使用PCなのか、どこからか時刻をひっぱってくるのか…) 別の国からのアクセスの時にも、その国の時刻に対応して動くようにしたいのですが これは可能でしょうか。 (日本時間とアメリカ時間だけでいいのですが) 初心者で、質問が多くなってしまい申し訳ありません。 どなたかお教えいただけると幸いです。 よろしくおねがいします。

  • JavaScript でのリアルタイム時刻表示

    17時間の時差があるアメリカの時刻をリアルタイムに表示したいのですが数箇所おかしな点があり、困っています。 17時間遅れているアメリカの時間を表示しようとしたのですが、17時間遅れているということから -17 しています。 hour の取得時に -17 としてみたのですが、おかしな表示になってしまい、正常に表示されません。 日本時間: 2008/02/13 02:14:55 アメリカ時間: 2008/02/13 0-15:14:55 というように表示されてしまいます。 本来なら17時間遅れているアメリカの時間は、 2008/02/12 09:14:55 と表示されなければいけないのですが、 どうすれば改善されますか? また日付の取得が10ずれてるのですが、 これも改善したいです。 単純に+10してしまうと、22日以降の表示がおかしくなると思うのでなんらかの対処が必要と思いますが、対処方法が分かりません。 以下にスクリプトを記しますので、ご教授よろしくお願い致します。 <script language="JavaScript"> <!-- function ClockU(){ time = new Date(); YearU = time.getFullYear(); MonthU = time.getMonth()+1; DayU = time.getDay(); HourU = time.getHours()-17; MinuteU = time.getMinutes(); SecondU = time.getSeconds(); if(MonthU<10){MonthU='0'+MonthU;} if(DayU<10){DayU='0'+DayU;} if(HourU<10){HourU='0'+HourU;} if(MinuteU<10){MinuteU='0'+MinuteU;} if(SecondU<10){SecondU='0'+SecondU;} document.getElementById('ClockU').innerHTML = YearU+'/'+MonthU+'/'+DayU+' '+HourU+':'+MinuteU+':'+SecondU; setTimeout('ClockU()',100); } setTimeout('ClockU()'); // --> </script>

  • 中国に時差はないのでしょうか。

    中国国内で右端の地域から左端の地域で同じ仕事をしていたとします。 その場合、右端の地域の始業時刻と左端の地域の始業時刻は同じ時刻で考えて仕事するのでしょうか? それとも時差というものが存在して、時間をどちらかに合わせて仕事をするのでしょうか? 日本だったら北海道と沖縄で仕事をして連絡取り合うとき、それほど意識する必要はないと思うのですが、広い中国ではどうなるのかな?と思いまして… 地理等に詳しくないので阿呆な質問かも知れませんがよろしくお願いします。

  • 中国国内の時差。

    中国はすごく大きな国ですけれども、中国の端から端までどのくらいの時差があるのでしょうか。 同じ中国といってもある地域とある地域では2時間近くの時差が存在していたりするのでしょうか。 馬鹿な質問に聞こえるかもしれませんが、よろしくお願いします。

  • サマータイムのとき、時差は広がるのですか?

    アメリカと日本の時差が13時間とします。アメリカでサマータイムの時期だとします。14時間か12時間のどちらになりますか?解説をお願いします。

  • 各国のタイムゾーン

    各国のタイムゾーン(国のなかでもロシア、アメリカなどは時差が伴います)を示したサイトを教えてください。

  • タイムゾーンとシステム時間とローカル時間の関係

    少々ややこしいですがお付き合い下さい。 Windows2000Server日本語版を日本で使用しています。 Windowsにはシステム時間とローカル時間というのがあり、システム時間はGMTを、そこからタイムゾーンで設定した時差を元にローカルタ時間が計算され参照できると思っています。(間違えであれば指摘して下さい。) 例えばローカル時間を変更すると(プロンプトでtimeなどで変更する。)その時間を元にGMTを計算しシステム時間を計算して、システム時間を書きなおすという方法が取られていると思います。 現在の状況と問題点 ・タイムゾーンはアメリカ中部時間(GMT-6時間)に設定されている。 ・ローカルタイムを例えば3:00に設定する。 ・恐らくココでシステム時間(GMT)が9:00になるはず。 ・この状況でファイルを更新したり、イベントログを見たりすると、時間がおかしい。具体的には時刻が18:00になる。 恐らく、ファイルの更新日付の計算がGMT+9である事から出てきているのですが、この9時間は日本の時差ではありますが、タイムゾーンで設定されている時間ではありません。(タイムゾーンはアメリカだから) どこで設定されている時間から算出されているのでしょうか? (言語の設定?それともなんか他に固定で持っているものがあるのでしょうか?)

専門家に質問してみよう