質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

1004閲覧

AU,SG,THそれぞれの現地時間の取得

tkshp

総合スコア174

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/07/31 06:17

編集2019/07/31 06:20

前提・実現したいこと

UTCで下記のような時間が文字列で与えられていた場合、

2019-10-29T06:30:00.000+09:00

AU,SG,THそれぞれの現地時間(文字列でなく日付型)を取得したいのですが、
どういった処理、コードを書けばよいですか?
(UTC+9の日付が与えられていた場合、どのようにすれば現地時間を取得できますか?)
ご教示お願いします。
なお、ライブラリは使わず、標準のJavaScript、もしくはjQueryで求めたいです。

試したこと

まず、国名コードについてですが、こちらのサイトで調べることができました。

AU AUS 036 オーストラリア AUSTRALIA SG SGP 702 シンガポール共和国 SINGAPORE Republic of Singapore TH THA 764 タイ王国 THAILAND Kingdom of Thailand

そして、協定世界時との時差も調べることができました。

・AU AUS 036 オーストラリア  協定世界時との時差:UTC+10  (サマータイム時の協定世界時との時差:UTC+11) ・SG SGP 702 シンガポール共和国  協定世界時との時差:UTC+8 ・TH THA 764 タイ王国  協定世界時との時差:UTC+7

おそらく考え方としては、
UTC+9の時間が与えられているので、これより、オーストラリアを求めたい場合は、

①UTC+9の時間から、UTC+0の時間を求める。 ②UTC+0の時間から、UTC+10の時間を求める。

という手順になるかと思いました。
もしくは、UTC+9とUTC+10の時差は+1時間なので、

UTC+9から、+1の時間を求める。

こちらの方が手軽な気がしますが、
どちらの方法でも具体的なコードの書き方がわかりません。
ご教示お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

JavaScript

1var a = new Date('2019-10-29T06:30:00.000+09:00'); 2a.getTimezoneOffset(); // -540 3a; // Tue Oct 29 2019 06:30:00 GMT+0900 (日本標準時)

ここでブラウザを開いたままPCのタイムゾーンをシドニーに変更すると

JavaScript

1a.getTimezoneOffset(); // -660 2a; // Tue Oct 29 2019 08:30:00 GMT+1100 (オーストラリア東部夏時間)

date オブジェクトはずっと同じ時刻を指し示していて変わってなく、表現が変わっただけです。

JavaScript

1a.toLocaleString(); // "2019/10/29 6:30:00" 2a.toLocaleString('ja-JP', { timeZone: 'Australia/Sydney' }); // "2019/10/29 8:30:00"

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

投稿2019/07/31 06:54

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/31 08:42 編集

すみません、記述を間違えました。
tkshp

2019/07/31 08:43

ご回答ありがとうございます。 ロケールの違う別々の日付の差(時差でない2つの日付の差)を取る為に、 ロケールを合わせなければいけないと勘違いしていたのですが、 ご回答者様のご回答により、 ロケールが違くても、2つの日付の差は取れるということがわかりました。 時差は考慮する必要がなかったのですね。 ありがとうございました。 var date1 = new Date("2019-10-29T06:30:00.000+09:00"); var date2 = new Date("2019-10-29T06:30:00.000+10:00"); console.log(date1-date2);
guest

0

下記のような記事は参考になりますでしょうか。
JavaScript入門 世界時計を作る

投稿2019/07/31 06:25

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/31 06:48

結局足し引きするしかないという話ですけど・・
tkshp

2019/07/31 08:44

ご回答ありがとうございます。 ちょっと勘違いしていました。 ありがとうございました。
guest

0

OSやブラウザの言語環境に依存するようなので現地時間を
日付型のまま参照することは難しそうです。
GMTに対してオフセットをとって文字列で調整するしかないのでは?

投稿2019/07/31 06:40

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkshp

2019/07/31 08:44

ご回答ありがとうございます。 ちょっと勘違いしていました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問