JavaScript のDate(日付)オブジェクト
コード例
const d = new Date();const d = new Date("2026-03-25");Dateオブジェクトは静的なものです。作成した瞬間にその時点の時間を保持しますが、時計のように「進む」わけではありません。コンピュータの時計は常に刻まれていますが、一度作成されたDateオブジェクトの中身は変わりません。
1. JavaScriptの日付出力
デフォルトでは、JavaScriptはブラウザのタイムゾーンを使用し、日付をフルテキスト文字列として表示します:Fri Apr 17 2026 19:40:30 GMT+0900 (日本標準時)
日付の表示方法については、このチュートリアルの後半で詳しく説明します。
2. Dateオブジェクトの作成
Dateオブジェクトは、new Date() コンストラクタを使用して作成します。
新しいDateオブジェクトを作成する方法は、大きく分けて 9通り あります。
new Date()new Date(date string)new Date(year, month)new Date(year, month, day)new Date(year, month, day, hours)new Date(year, month, day, hours, minutes)new Date(year, month, day, hours, minutes, seconds)new Date(year, month, day, hours, minutes, seconds, ms)new Date(milliseconds)
2.1 new Date()
new Date() は、現在の日付と時刻を持つDateオブジェクトを作成します。
const d = new Date();2.2 new Date(date string)
日付を表す文字列からDateオブジェクトを作成します。
const d = new Date("October 13, 2014 11:13:00");
const d2 = new Date("2022-03-25");2.3 new Date(year, month, ...)
指定した日付と時刻で作成します。引数は「年、月、日、時、分、秒、ミリ秒」の順で指定します。
const d = new Date(2018, 11, 24, 10, 33, 30, 0);重要: JavaScriptでは、月を 0から11 でカウントします。
- 1月 = 0
- 12月 = 11
オーバーフローの挙動:
11より大きい月を指定してもエラーにはならず、翌年へ繰り越されます。
// 15月(翌年の4月)として解釈される
const d = new Date(2018, 15, 24, 10, 33, 30);
// 上記は下記と同じ結果になります
const d2 = new Date(2019, 3, 24, 10, 33, 30);同様に、月の日数を超える値を指定した場合も、翌月へ繰り越されます。
const d = new Date(2018, 5, 35, 10, 33, 30);
// 6月35日は、7月5日として扱われる
const d2 = new Date(2018, 6, 5, 10, 33, 30);3. 引数の数を変えて作成する
引数の数に応じて、省略された項目はデフォルト値(通常は0や1)になります。
- 6つの引数: 年, 月, 日, 時, 分, 秒
new Date(2018, 11, 24, 10, 33, 30); - 5つの引数: 年, 月, 日, 時, 分
new Date(2018, 11, 24, 10, 33); - 4つの引数: 年, 月, 日, 時
new Date(2018, 11, 24, 10); - 3つの引数: 年, 月, 日
new Date(2018, 11, 24); - 2つの引数: 年, 月
new Date(2018, 11);
※ 「月」は省略できません。引数を1つだけにすると、それは「ミリ秒」として扱われます。
const d = new Date(2018); // これは2018年ではなく、1970年から2018ミリ秒後と解釈されます3.1 前世紀の指定
1桁または2桁の年を指定すると、19xx年として解釈されます。
const d = new Date(99, 11, 24); // 1999年12月24日
const d2 = new Date(9, 11, 24); // 1909年12月24日4. JavaScriptは日付を「ミリ秒」で保持する
JavaScript内部では、1970年1月1日(UTC)からの経過時間をミリ秒単位で保持しています。
- 基準時(ゼロタイム):1970年1月1日 00:00:00 UTC
- 1日(24時間):86,400,000 ミリ秒
4.1 new Date(milliseconds)
基準時にミリ秒を加減して新しい日付を作成します。
// 1970年1月1日 + 100,000,000,000ミリ秒
const d1 = new Date(100000000000);
// 1970年1月1日 - 100,000,000,000ミリ秒
const d2 = new Date(-100000000000);
// 1970年1月1日 + 24時間
const d3 = new Date(24 * 60 * 60 * 1000); // または new Date(86400000)
// 基準時ちょうど
const d0 = new Date(0);5. Dateオブジェクトのメソッド
Dateオブジェクトが作成されると、さまざまなメソッドを使用して操作が可能になります。
メソッドを使えば、ローカル時間またはUTC(世界標準時)を用いて、年・月・日・時・分・秒・ミリ秒を取得したり設定したりできます。
詳細は次の章で解説します。
6. 日付の表示 (Displaying Dates)
JavaScriptはデフォルトで toString() メソッドを使用して日付を出力します。これはタイムゾーンを含む文字列表現です。
6.1 主な表示用メソッド
HTMLなどでDateオブジェクトを表示しようとすると、自動的に toString() が呼び出されます。
- toString(): デフォルトの文字列表現
const d = new Date(); d.toString();- 例:
Fri Apr 17 2026 19:40:30 GMT+0900 (日本標準時) - toDateString(): 日付部分のみを読みやすく変換
d.toDateString();- 例:
Fri Apr 17 2026 - toUTCString(): UTC標準に基づいた文字列に変換
d.toUTCString();- 例:
Fri, 17 Apr 2026 10:40:30 GMT - toISOString(): ISO 8601標準(国際標準)に変換
d.toISOString();- 例:
2026-04-17T10:40:30.000Z