時刻の計算は、日常業務のシステムやアプリ開発の中でとてもよく使われます。
たとえば、
- 1分前のログを調べたい
- 1時間後に処理を予約したい
- 1か月前の更新を確認したい
といった処理は、多くの場面で必要になります。
この記事では、JavaScriptで使われるDate型を使って、過去と未来の時刻を自由に扱うための基本的な考え方と実装方法を紹介します。
時刻を「ずらす」ための基本
JavaScriptでは、現在の時刻は次のようにして取得します。
const now = new Date();
この時点でnowには、現在の日時が入っています。ここから1秒前や1日後といったように「ずらした時刻」を作るには、時刻を構成する各単位(秒・分・時間・日など)を直接操作します。
よく使う時刻の単位と操作方法
JavaScriptのDateオブジェクトは、次のような関数で構成要素を操作できます。
setSeconds(),getSeconds()→ 秒setMinutes(),getMinutes()→ 分setHours(),getHours()→ 時setDate(),getDate()→ 日setMonth(),getMonth()→ 月(※0から始まる)setFullYear(),getFullYear()→ 年
過去の時刻を求める例
以下は、現在の時刻から過去の特定時間分だけさかのぼる例です。
const now = new Date();
// 1秒前
const oneSecondAgo = new Date(now);
oneSecondAgo.setSeconds(now.getSeconds() - 1);
// 1分前
const oneMinuteAgo = new Date(now);
oneMinuteAgo.setMinutes(now.getMinutes() - 1);
// 1時間前
const oneHourAgo = new Date(now);
oneHourAgo.setHours(now.getHours() - 1);
// 1日前
const oneDayAgo = new Date(now);
oneDayAgo.setDate(now.getDate() - 1);
// 1か月前
const oneMonthAgo = new Date(now);
oneMonthAgo.setMonth(now.getMonth() - 1);
// 1年前
const oneYearAgo = new Date(now);
oneYearAgo.setFullYear(now.getFullYear() - 1);
これらはすべて、「今」からどれだけ過去に戻るかを示す処理です。
未来の時刻を求める例
逆に、将来の予定などを扱いたい場合は、時刻を進める処理が必要になります。
const now = new Date();
// 1秒後
const oneSecondLater = new Date(now);
oneSecondLater.setSeconds(now.getSeconds() + 1);
// 1分後
const oneMinuteLater = new Date(now);
oneMinuteLater.setMinutes(now.getMinutes() + 1);
// 1時間後
const oneHourLater = new Date(now);
oneHourLater.setHours(now.getHours() + 1);
// 1日後
const oneDayLater = new Date(now);
oneDayLater.setDate(now.getDate() + 1);
// 1か月後
const oneMonthLater = new Date(now);
oneMonthLater.setMonth(now.getMonth() + 1);
// 1年後
const oneYearLater = new Date(now);
oneYearLater.setFullYear(now.getFullYear() + 1);
このようにすれば、未来の任意の時刻を扱うことができます。
注意点と落とし穴
JavaScriptの日時操作には、次のような注意点があります。
月は0から始まる
たとえば、1月は0、12月は11として扱われます。setMonth(12)とすると翌年の1月になります。
日付が存在しない場合は自動調整される
2025-06-31のような存在しない日付を設定すると、次の月に繰り越されます。
意図しない動作を防ぐには検証が必要です。
時刻はUTCベース
環境によっては時差(タイムゾーン)の影響が出ることがあります。
必要に応じてtoISOString()やtoLocaleString()で形式を確認しましょう。
よくある用途と活用例
このような時刻操作は、実務でさまざまな場面で使われます。
- 通知機能
-
1分前に通知を表示する
- 有効期限管理
-
1日後に期限が切れる項目をチェック
- データ抽出
-
1時間前より古い記録のみを検索する
- 定期処理
-
1か月後に予約されたタスクを登録する
特にデータベースとの連携では、日時の比較に使う「基準時刻」をこのように作成することで、柔軟で正確な条件検索が可能になります。
まとめ
JavaScriptのDate型を使えば、過去・未来の任意の時刻を簡単に操作できます。
業務システムでも、次のような操作が非常に役立ちます。
- 現在時刻の取得と複製
- 各単位(秒・分・時間・日・月・年)の加減
- 過去・未来の基準時刻の作成
こうした基本操作をおさえておけば、スケジュール管理・履歴表示・通知処理・有効期限の確認など、あらゆる場面で活用できます。
過去から未来まで、時の流れを自由に扱えるようになれば、あなたのシステムはより信頼性の高いものになるはずです。


コメント