🌟
JavaScriptの日付操作まとめ
JavaScriptでは、日付や時刻を扱うときに Date オブジェクトを使います。
フロントエンド開発では、表示や計算、APIデータ処理などで非常によく使います。
new Date()
const now = new Date();
console.log(now); // 現在の日時が出力される
Date() の中に引数を指定しない場合、現在日時が自動的にセットされます。
引数を入れると、任意の日付を作ることも可能です。
const date1 = new Date('2025-11-04'); // 文字列指定
const date2 = new Date(2025, 10, 4); // 年・月(0始まり)・日指定
console.log(date1, date2);
toLocaleString()
const now = new Date();
console.log(now.toLocaleString()); // "2025/11/4 14:22:31" など
ユーザーのロケールに応じて見やすい形式で日付を文字列に変換します。
日本語環境なら "YYYY/MM/DD hh:mm:ss" のようになります。
個別に取得するメソッド
| メソッド | 取得内容 | 例 |
|---|---|---|
getFullYear() |
年 | 2025 |
getMonth() |
月(0〜11) |
10 → 11月 |
getDate() |
日 | 4 |
getHours() |
時間 | 14 |
getMinutes() |
分 | 22 |
getSeconds() |
秒 | 31 |
getMilliseconds() |
ミリ秒 | 450 |
getDay() |
曜日(0:日〜6:土) |
2(火曜) |
const now = new Date();
console.log(`${now.getFullYear()}年${now.getMonth() + 1}月${now.getDate()}日`);
⚠️ データ取得時の注意点
-
getMonth()は 0から始まる -
getDay()は 曜日を数字で返す(例: 0=日曜日) -
Dateは内部的に ミリ秒単位で管理されている
日時データの生成
const birthday = new Date(2000, 6, 10, 14, 30, 0);
console.log(birthday.toLocaleString()); // 2000/7/10 14:30:00
(年, 月, 日, 時, 分, 秒)を指定して作成できます。
年や月をまたいだ日時の生成
JavaScriptでは、日付が自動で繰り上がる/繰り下がる処理が行われます。
const date = new Date(2025, 0, 32); // 2025年1月32日?
console.log(date.toLocaleString()); // → 2025/2/1 に自動調整される
setDate() — 日付の変更や計算
const date = new Date(2025, 0, 10);
date.setDate(date.getDate() + 10);
console.log(date.toLocaleString()); // 2025/1/20
setDate() は「日付を直接書き換える」メソッド。
getDate() と組み合わせて「n日後」「n日前」の計算ができます。
const で宣言できる理由
const d = new Date();
d.setDate(15); // OK
console.log(d);
const で宣言しても、オブジェクト内部の値は変更可能だからです。
const は「再代入禁止」なだけで「中身の変更禁止」ではありません。
getTime() — 時刻をミリ秒で取得
const now = new Date();
console.log(now.getTime()); // 1730695600000 のような数値
1970年1月1日からの経過時間(ミリ秒)を返します。
この「経過時間」を使って日時の差を求めます。
getTime() の活用例
const start = new Date('2025-11-01');
const end = new Date('2025-11-04');
const diff = end.getTime() - start.getTime();
const diffDays = diff / (1000 * 60 * 60 * 24);
console.log(`${diffDays}日`); // → 3日
UTC(協定世界時)と日本時間
JavaScriptのDateは内部的にはUTC(世界標準時)で管理されています。
ただし、toLocaleString() などを使うと自動的にローカル時間(日本時間など)で表示されます。
UNIXタイムスタンプ
UNIX時間は「1970年1月1日 00:00:00 UTC」からの経過秒数。
JavaScriptでは getTime() が ミリ秒なので、秒にしたいときは / 1000。
const timestamp = Math.floor(Date.now() / 1000);
console.log(timestamp);
日時の差を計算する
const start = new Date('2025-11-01T00:00:00');
const end = new Date('2025-11-04T12:00:00');
const diffMs = end - start;
const diffHours = diffMs / (1000 * 60 * 60);
console.log(`${diffHours}時間の差`);
Date同士を引き算すれば、ミリ秒単位の差を簡単に出せます。
Date.now()
console.log(Date.now()); // 現在時刻のミリ秒
(new Date()).getTime() と同じ。
パフォーマンス計測などに便利です。
const start = Date.now();
// 重い処理
for (let i = 0; i < 1e7; i++) {}
console.log(Date.now() - start + 'ms'); // 実行時間を測る
まとめ
| メソッド | 内容 | よく使う場面 |
|---|---|---|
new Date() |
日付オブジェクトを生成 | 現在日時を扱う |
toLocaleString() |
ローカル形式に変換 | 画面表示用 |
getFullYear()〜getSeconds()
|
各項目を取得 | 表示・比較 |
setDate() |
日付を変更 | n日後などの計算 |
getTime() |
ミリ秒取得 | 差分計算 |
Date.now() |
現在ミリ秒取得 | 処理時間測定 |
UTC / UNIX
|
世界標準時・秒基準 | APIやバックエンドとのやり取り |
Discussion
個別 に 日付部分を取得するのであれば Intl.DateTimeFormat の formatToParts で取得するのも手ですね。
コメントありがとうございます!
Intl.DateTimeFormatのformatToPartsはまだ使ったことがなかったので、今度試してみます!とても参考になります 🙏