JavaScript の日付を特定のタイムゾーンに初期化する

Harshit Jindal 2023年10月12日
  1. Intl.DateTimeFormat および format() メソッドを使用して、JavaScript の日付を特定のタイムゾーンに初期化する
  2. toLocaleString() メソッドを使用して、JavaScript の日付を特定のタイムゾーンに初期化する
JavaScript の日付を特定のタイムゾーンに初期化する

このチュートリアルでは、JavaScript の日付を特定のタイムゾーンに初期化する方法を説明します。

JavaScript の日付オブジェクトは内部的に UTC で機能しますが、オペレーティングコンピューターの現地時間に従って出力を表示します。日付オブジェクトには、タイムゾーンの概念はありません。宣言された文字列オブジェクトはありません。これは、1970-01-01 00:00:00 UTC から経過したミリ秒数の測定値にすぎません。時刻を出力する際、コンピュータのローカルタイムゾーンが自動的に考慮され、内部表現に適用されます。異なるタイムゾーンでは機能しません。したがって、このような操作を実行するには、関数と外部ライブラリの助けが必要です。

Intl.DateTimeFormat および format() メソッドを使用して、JavaScript の日付を特定のタイムゾーンに初期化する

JavaScript Intl オブジェクトは、JavaScript InternationalizationAPI を支援します。日付/時刻、文字列、数値を変換するための多くの機能を提供します。Intl オブジェクトは、DateTimeFormat を使用して日時文字列をフォーマットします。これには、日付を取得し、フォーマッターへの引数として提供されたロケールとオプションを使用して、日付を別のタイムゾーンに変換する format メソッドがあります。このメソッドは、日付を必要なタイムゾーンにフォーマットし、文字列に変換します。

format() 関数が取るパラメータは日付です。Intl.DateTimeFormat オブジェクトの形成には、次の引数が必要です。

  1. locales:言語タグとロケールタグを含む文字列の配列です。通常、これはオプションのパラメータですが、私たちの目的のために必要です。タイムゾーンを変更するには、BCP 言語コードと必要なタイムゾーンを指定するだけです。
  2. options:比較を実行するためのプロパティを指定するために使用されるオブジェクトです。これは、スタイルと表示単位を指定するために使用できるオプションのパラメーターでもあります。プロパティには、secondminutehourdaymonthyear などがあります。

例:{ hour: 'numeric', hour12: false, minute: 'numeric', timeZoneName: 'short'} のようなオプションオブジェクトを渡すことができます。

function changeTimezone() {
  let date = new Date(Date.UTC(2021, 5, 28, 3, 0, 0));
  console.log('Date in India: ' + date);
  let formatter =
      new Intl.DateTimeFormat('en-US', {timeZone: 'America/Denver'});
  let usDate = formatter.format(date);
  console.log('Date in USA: ' + usDate);
}

出力:

Date in India: Mon Jun 28 2021 08:30:00 GMT+0530 (India Standard Time)
VM1504:7 Date in USA: 6/27/2021

上記の関数では、最初に Date() コンストラクターを使用して Date オブジェクトを作成します。次に、Intl.DateTimeFormat を使用して、ロケール、つまり変換先の BCP 言語タグtimeZone を指定してフォーマッターを作成します。次に、このフォーマッターを使用して、日付を必要なタイムゾーンに変換します。

toLocaleString() メソッドを使用して、JavaScript の日付を特定のタイムゾーンに初期化する

toLocaleString() メソッドは、使いやすく、日付で直接呼び出すことができるため、タイムゾーンの変更に最も一般的に使用されます。Intl.DateTimeFormat と同じように機能します。また、ロケール文字列とオプションを引数として受け取り、それらに従ってフォーマットされた日付の文字列を返します。この方法の利点は、上記の方法とは異なり、国のタイムゾーンに従って時間を変換し、それを文字列で返すことです。

function changeTimezone() {
  let date = new Date(Date.UTC(2021, 5, 28, 3, 0, 0));
  console.log('Date in India: ' + date);
  let usDate = date.toLocaleString('en-US', {timeZone: 'America/New_York'});
  console.log('Date in USA: ' + usDate);
}

出力:

Date in India: Mon Jun 28 2021 08:30:00 GMT+0530 (India Standard Time)
Date in USA: 6/27/2021, 11:00:00 PM

上記の関数では、最初に Date() コンストラクターを使用して Date オブジェクトを作成します。language tagtimeZone を指定した日付に toLocaleString 関数を呼び出し、日付/時刻を別のタイムゾーンに変換します。

著者: Harshit Jindal
Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

関連記事 - JavaScript DateTime