Date
クラスの下記のメソッドは、第 2 引数のオプションオブジェクトで、timeZone
プロパティを指定できるようになっています (メソッド名は toLocalXxx
ではなく、toLocaleXxx
であることに注意してください)。
下記の例では、ユーザ環境、ロンドン、米国ニューヨークのローカルタイムを出力しています。
var date = new Date();
console.log(date.toLocaleString());
console.log(date.toLocaleString('en-US', { timeZone: 'America/New_York' }));
console.log(date.toLocaleString('en-GB', { timeZone: 'Europe/London' }));
2019/2/21 18:31:08
2/21/2019, 4:31:08 AM
21/02/2019, 09:31:08
第 1 引数はロケール(簡単に言うと使用する言語)の設定であり、ここはタイムゾーン(時差)の設定とは関係がないことに注意してください。
America/New_York
といったタイムゾーンの設定は、あくまで第 2 引数で渡すオブジェクトの、timeZone
プロパティで指定します。
ちなみに、第 2 引数のオプションオブジェクトでは、timeZone
プロパティ以外にもいろいろな設定を行えるようになっています。
例えば下記のようなプロパティがあります。
hour12
: true
12時間表記。false
- 24時間表記。year
: 今年の表現。”numeric”, “2-digit” から選択。month
: 月の表現。”numeric”, “2-digit”, “narrow”, “short”, “long” から選択。day
: 日の表現。”numeric”, “2-digit” から選択。hour
: 時間の表現。”numeric”, “2-digit” から選択。minute
: 分の表現。”numeric”, “2-digit” から選択。second
: 秒の表現。”numeric”, “2-digit” から選択。指定できるタイムゾーン名は、IANA time zone database の定義によるとされていますが、下記の Wikipedia ページで手っ取り早く調べることができます。
下記は、いろんな国(タイムゾーン)の現地時間を Date#toLocaleString
で表示するサンプルです。
var timeZones = [
'Pacific/Auckland', // オークランド(ニュージーランド)
'Asia/Tokyo', // 東京(日本)
'Asia/Singapore', // シンガポール
'Asia/Shanghai', // 上海
'Asia/Hong_Kong', // 香港
'Asia/Calcutta', // カルカッタ(インド)
'Asia/Bahrain', // バーレーン
'Africa/Johannesburg', // ヨハネスブルグ(南アフリカ)
'Europe/Berlin', // ベルリン(ドイツ)
'Europe/Zurich', // チューリッヒ(スイス)
'Europe/London', // ロンドン(イギリス)
'America/New_York', // ニューヨーク(アメリカ)
'America/Toronto', // トロント(カナダ)
];
var date = new Date();
for (var i = 0; i < timeZones.length; ++i) {
var tz = timeZones[i];
var options = { timeZone: tz, hour12: false };
console.log(date.toLocaleString('en-US', options) + ' ' + tz);
}
2/21/2019, 23:12:16 Pacific/Auckland
2/21/2019, 19:12:16 Asia/Tokyo
2/21/2019, 18:12:16 Asia/Singapore
2/21/2019, 18:12:16 Asia/Shanghai
2/21/2019, 18:12:16 Asia/Hong_Kong
2/21/2019, 15:42:16 Asia/Calcutta
2/21/2019, 13:12:16 Asia/Bahrain
2/21/2019, 12:12:16 Africa/Johannesburg
2/21/2019, 11:12:16 Europe/Berlin
2/21/2019, 11:12:16 Europe/Zurich
2/21/2019, 10:12:16 Europe/London
2/21/2019, 05:12:16 America/New_York
2/21/2019, 05:12:16 America/Toronto