JavaScript で現在の日付に日数を追加する

Moataz Farid 2023年10月12日
  1. JavaScript Date クラスを理解する
  2. JavaScript での Date() に日数を追加する
  3. JavaScript の prototype を用いて Date() に日数を追加する
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)

関連記事 - JavaScript Date