JavaScript:
将来または過去の日付を計算する
How to: (方法)
// 今日の日付を取得します
const today = new Date();
// 5日後の日付を計算します
const fiveDaysLater = new Date(today.getTime() + (5 * 24 * 60 * 60 * 1000));
console.log(fiveDaysLater.toString()); // 出力例: Mon Mar 07 2023 14:56:18 GMT+0900 (Japan Standard Time)
// 3週間前の日付を計算します
const threeWeeksEarlier = new Date(today.getTime() - (21 * 24 * 60 * 60 * 1000));
console.log(threeWeeksEarlier.toString()); // 出力例: Mon Feb 13 2023 14:56:18 GMT+0900 (Japan Standard Time)
Deep Dive (深堀り)
JavaScriptのDate
オブジェクトは、1970年1月1日00:00:00 UTCからのミリ秒数を基に日時を表します。過去や将来の日付を求めるには、現在のミリ秒数に変化させたい日数・時数・分数・秒数をミリ秒に換算して加算または減算します。
代替方法としてmoment.js
のようなライブラリを使用することもできますが、簡単な計算であればネイティブのDate
オブジェクトで充分です。しかし、タイムゾーンや夏時間のような複雑なケースを扱う場合、これらのライブラリが便利です。
また、Date
オブジェクトでは月を0から数えることに注意が必要です(0 = 1月, 11 = 12月)。日付計算においてこの挙動を認識し、正しく処理することが肝心です。
See Also (関連情報)
- JavaScript Date リファレンス: MDN web docs
- moment.jsライブラリ: Moment.js
- 日付と時刻を処理するためのluxonライブラリ: Luxon
- 日付の演算をバリデーションするためのDate-fnsライブラリ: date-fns