JavaScriptのDateオブジェクトについて
JavaScriptにおける日付や時刻を扱うためのオブジェクトは、Dateオブジェクトです。日付の作成方法は複数あり、それぞれに異なる挙動があります。以下では、new Date()
の使用法について詳しく解説します。
基本的な日付の作成方法
new Date(year, month[, day[, hour[, min[, sec[, msec]]]]])
は、指定した年、月、日などを使って新しい日付オブジェクトを作成します。
この形式の引数に関して、次の注意点があります:
year
は西暦年(例:2025)を指定します。month
は0から始まる月のインデックスです(例:1月は0、2月は1、12月は11)。day
はオプションで、月の日付(デフォルトは1日)。hour
はオプションで、24時間制の時間(デフォルトは0時)。min
、sec
、msec
もオプションで、それぞれ分、秒、ミリ秒を指定します。
例として、次のコードで新しい日付オブジェクトを作成できます:
let date1 = new Date(2025, 0, 1, 12, 30); // 2025年1月1日 12:30 console.log(date1); // 出力: Wed Jan 01 2025 12:30:00 GMT+0900 (Japan Standard Time)数学的に表現すると、日付は次のような時間の経過を表現します: \[ \text{date} = \text{year} + \frac{\text{month}}{12} + \frac{\text{day}}{365} + \frac{\text{hour}}{24} + \frac{\text{min}}{1440} + \frac{\text{sec}}{86400} + \frac{\text{msec}}{86400000} \] これは、年、月、日、時間、分、秒、ミリ秒の加重平均として日付を計算するモデルに近いです。
エポックタイムからの日付の作成
new Date(time)
の形式では、エポックタイム(1970年1月1日からの経過ミリ秒)を使用して日付を作成します。time
は整数値で、JavaScriptではこれをミリ秒単位で処理します。
例えば、エポックタイムである0
を指定すると、次のようになります:
let date2 = new Date(0); // エポックタイムからの日付 console.log(date2); // 出力: Thu Jan 01 1970 09:00:00 GMT+0900 (Japan Standard Time)このように、エポックタイムは日付の基準となる値を指し、数学的には次のように表せます: \[ \text{date} = 1970 + \frac{\text{time}}{86400000} \] ここで、86400000は1日あたりのミリ秒数です。
文字列からの日付の作成
new Date(str)
の形式では、文字列で指定された日付を解析して日付オブジェクトを作成します。文字列はISO 8601形式(例:"2025-01-01T12:30:00"
)や、標準的な形式(例:"January 1, 2025"
)などをサポートしています。
例えば、次のように文字列から日付を作成できます:
let date3 = new Date("2025-01-01T12:30:00"); // ISO 8601形式 console.log(date3); // 出力: Wed Jan 01 2025 12:30:00 GMT+0900 (Japan Standard Time)ISO 8601形式は日付と時間を一貫して表すため、非常に広く使用されています。この場合、文字列は次のように数学的に処理されます: \[ \text{date} = 2025 + \frac{1}{12} + \frac{1}{365} + \frac{12}{24} + \frac{30}{1440} \]
現在の日時の取得
new Date()
を引数なしで呼び出すと、現在の日付と時刻が返されます。これはシステムのローカル時間に基づいています。
例えば、現在の日時を取得するコードは次のようになります:
let currentDate = new Date(); // 現在の日時 console.log(currentDate); // 出力: 現在の日時この形式は、現在の日時を取得する際に非常に便利です。内部的には、システムのタイムゾーンに基づいたミリ秒数が計算されて返されます。
ここでの数学的な表現は次の通りです:
\[ \text{date} = \text{current year} + \frac{\text{current month}}{12} + \frac{\text{current day}}{365} + \cdots \]