JavaScript で現在の日付に日数を追加する
このチュートリアルでは、JavaScript で現在の日付に日数を追加したり、カスタムの日付を追加したりする方法を紹介します。最初に Date
とは何か、JavaScript の Date
クラスの異なるメソッドについて紹介します。
JavaScript Date
クラスを理解する
JavaScript では、Date
クラスは基本的に UTC の 1970 年 1 月 1 日午前 0 時から経過したミリ秒数です。これは、コンピュータで日付や時刻の値を記録するために使われる UNIX のエポックとは異なります。
Date
クラスを使い始めるには、扱うための新しい Date
オブジェクトを作成する必要があり、そのオブジェクトの作成は、次の例にあるように様々な方法で行うことができます。
var myDate = new Date();
var myDateOne = new Date('August 19, 2020 23:15:30');
var myDateTwo = new Date('2020-08-17T03:24:00');
var myDateThree = new Date(2020, 07, 17);
var myDateFour = new Date(2020, 07, 17, 3, 24, 0);
console.log(myDate);
console.log(myDateOne);
console.log(myDateTwo);
console.log(myDateThree);
console.log(myDateFour);
パラメータを指定せずに Date()
コンストラクタを呼び出すと、Date
オブジェクトは現在の日付と時刻を持ち、パラメータを指定すると、そのオブジェクトはその時点を表すパース文字列を持ちます。
例の new Date(2020, 07, 17)
のように適切な日時成分の値を指定した場合、インデックスは 1 ではなく 0 から始まるはずです。
出力:
Fri Nov 13 2020 19:16:58 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 23:15:30 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 03:24:00 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 00:00:00 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 03:24:00 GMT+0200 (Eastern European Standard Time)
Data
クラスの多くのメソッドを頻繁に使うので、次の節でそのいくつかを説明します。
JavaScript での Date()
に日数を追加する
JavaScript で特定の日数を追加する関数を作成したいとしましょう。この場合、Date
クラスのメソッド getDate()
を用いて実装すれば、現地時間に応じて選択された日付の 1 日から 31 日までの月の曜日を返し、特定の日付の月の曜日を設定するには setDate()
を用いることができます。
例えば、日付が 11/02/2020
の場合、1 日を加算すると 12/02/2020
になります。31/03/2020
の場合は、[1, 31]
しか有効な範囲がないので、01/04/2020
になります。
Date
オブジェクトに日を追加する次の例を見てみましょう。
function addDaysToDate(date, days) {
var res = new Date(date);
res.setDate(res.getDate() + days);
return res;
}
var tmpDate = new Date(2020, 07, 20); // Augest 20, 2020
console.log(addDaysToDate(tmpDate, 2));
出力:
Sat Aug 22 2020 00:00:00 GMT+0200 (Eastern European Standard Time)
今日にその日を追加したい場合は、上のコードで new Date(date)
を new Date()
に置き換えるか、あるいは new Date()
を直接関数に渡すことができます。
var tmpDate = new Date(); // Today
console.log(addDaysToDate(tmpDate, 2)); // today + 2
出力:
Sun Nov 15 2020 22:55:06 GMT+0200 (Eastern European Standard Time)
JavaScript の prototype
を用いて Date()
に日数を追加する
追加する日数として数値入力のみを受け取る Date
クラスのプロトタイプを作成したい場合は、以下の例のように実装することができます。
Date.prototype.addDays =
function(noOfDays) {
var tmpDate = new Date(this.valueOf());
tmpDate.setDate(tmpDate.getDate() + noOfDays);
return tmpDate;
}
var myDate = new Date(); // today
console.log(myDate.addDays(2)); // today + 2
出力:
Sun Nov 15 2020 22:59:06 GMT+0200 (Eastern European Standard Time)