JavaScriptで日時を加算・減算する方法!setDateやsetMonthで簡単に操作
生徒
「JavaScriptで日付を1日後にしたり、1ヶ月前に戻したりする方法ってありますか?」
先生
「あります。DateオブジェクトのsetDate()やsetMonth()を使うと、簡単に加算や減算ができます。」
生徒
「加算とか減算って、具体的にはどういうことですか?」
先生
「例えば今日が11月18日だとして、1日後は11月19日になりますよね。この操作をプログラムで自動的に行うのが加算、逆に前の日に戻すのが減算です。」
1. Dateオブジェクトの作り方
まずは操作したい日付をDateオブジェクトで作ります。Dateオブジェクトは年、月、日を指定して作ることができます。
const today = new Date(2025, 10, 18); // 2025年11月18日
console.log(today);
2025-11-17T15:00:00.000Z
注意点として、JavaScriptでは月が0から始まるため、11月は10になります。
2. setDate()で日付を加算・減算
setDate()は日を設定するメソッドです。既存の日付に対して数値を足したり引いたりして、新しい日付に変更できます。
// 1日加算
const tomorrow = new Date(today);
tomorrow.setDate(today.getDate() + 1);
console.log(tomorrow);
// 2日減算
const twoDaysAgo = new Date(today);
twoDaysAgo.setDate(today.getDate() - 2);
console.log(twoDaysAgo);
2025-11-18T15:00:00.000Z
2025-11-16T15:00:00.000Z
このように、setDate()に現在の日付に対して足したり引いたりした値を入れるだけで、日付を簡単に操作できます。
3. setMonth()で月単位の操作
同じようにsetMonth()を使うと月単位での加算や減算ができます。こちらも0から11で月を指定します。
// 1ヶ月加算
const nextMonth = new Date(today);
nextMonth.setMonth(today.getMonth() + 1);
console.log(nextMonth);
// 1ヶ月減算
const lastMonth = new Date(today);
lastMonth.setMonth(today.getMonth() - 1);
console.log(lastMonth);
2025-12-18T15:00:00.000Z
2025-10-18T15:00:00.000Z
setMonth()も自動で翌年や前の年に繰り越してくれるので、12月に1ヶ月加算すれば翌年1月になります。
4. 年や時間の加算・減算も可能
日付だけでなく年や時間も加算・減算できます。setFullYear()やsetHours()を使います。
// 年の加算
const nextYear = new Date(today);
nextYear.setFullYear(today.getFullYear() + 1);
console.log(nextYear);
// 時間の減算
const threeHoursAgo = new Date(today);
threeHoursAgo.setHours(today.getHours() - 3);
console.log(threeHoursAgo);
2026-11-18T15:00:00.000Z
2025-11-18T12:00:00.000Z
このようにset系メソッドを使うことで、日付や時間を柔軟に操作できます。イベント管理やカレンダーアプリの作成に便利です。
5. 注意点とポイント
日付の加算・減算を行うとき、月末や年末を超える場合も自動で調整されます。例えば11月30日に1日加算すると12月1日になります。
また、月の値は0から11、日や時間は1から始まると覚えておくと誤操作を防げます。プログラミング初心者でも、加算・減算のイメージを「今日の次の日」「先月の同じ日」と考えるとわかりやすいです。