JavaScriptで未来や過去の日付を取得する応用テクニック
先生と生徒の会話形式で理解しよう
生徒
「先生、JavaScriptで明日や来週の日時を自動で取得したいです。」
先生
「それなら、Dateオブジェクトを使って日付の加減算を行うと便利です。」
生徒
「加減算ってどうやってやるんですか?」
先生
「日付はミリ秒で表現されているので、1日分のミリ秒を足したり引いたりすれば簡単に未来や過去の日付を計算できます。」
1. 1日後や1日前の日付を取得する
1日は24時間、1時間は60分、1分は60秒、1秒は1000ミリ秒です。つまり1日 = 24 × 60 × 60 × 1000 ミリ秒で計算できます。
const today = new Date();
const oneDay = 24 * 60 * 60 * 1000;
// 1日後
const tomorrow = new Date(today.getTime() + oneDay);
console.log(tomorrow.toLocaleString("ja-JP"));
// 1日前
const yesterday = new Date(today.getTime() - oneDay);
console.log(yesterday.toLocaleString("ja-JP"));
2025/11/19 0:00:00
2025/11/17 0:00:00
この方法で簡単に1日単位で未来や過去の日付を取得できます。
2. 1週間後や1週間前の日付を取得する
1週間は7日分のミリ秒を足すだけです。
const oneWeek = 7 * oneDay;
// 1週間後
const nextWeek = new Date(today.getTime() + oneWeek);
console.log(nextWeek.toLocaleString("ja-JP"));
// 1週間前
const lastWeek = new Date(today.getTime() - oneWeek);
console.log(lastWeek.toLocaleString("ja-JP"));
2025/11/25 0:00:00
2025/11/11 0:00:00
このように1週間単位で未来や過去の日付を計算することも簡単です。
3. 月や年単位での未来・過去日付
月や年単位の計算はsetMonthやsetFullYearを使います。自動で月の繰り上がりや日数を調整してくれます。
const nextMonth = new Date();
nextMonth.setMonth(today.getMonth() + 1);
console.log(nextMonth.toLocaleString("ja-JP"));
const lastYear = new Date();
lastYear.setFullYear(today.getFullYear() - 1);
console.log(lastYear.toLocaleString("ja-JP"));
2025/12/18 0:00:00
2024/11/18 0:00:00
月や年単位の計算もDateオブジェクトで柔軟に対応できます。
4. 特定の曜日までの日数を計算する
例えば次の金曜日を取得する場合は、現在の曜日を取得して差分を計算します。
const targetDay = 5; // 金曜日 (0=日曜, 1=月曜,...)
const currentDay = today.getDay();
const diff = (targetDay + 7 - currentDay) % 7 || 7;
const nextFriday = new Date(today.getTime() + diff * oneDay);
console.log(nextFriday.toLocaleString("ja-JP"));
2025/11/21 0:00:00
このテクニックを使えば、特定の曜日の未来日付も簡単に求められます。
5. 応用:締切やリマインダー機能に活用
例えば、今日から7日後の締切日を計算して表示したり、リマインダー通知の日時を計算することもできます。未来日付や過去日付をプログラムで扱うことで、カレンダーやスケジュールアプリの開発にも応用可能です。
// 締切日:今日から7日後
const deadline = new Date(today.getTime() + 7 * oneDay);
console.log("締切日は " + deadline.toLocaleDateString("ja-JP"));
締切日は 2025/11/25