JavaScript 日時の計算のサンプル(加算と減算)

JavaScriptの日時の計算のサンプルです。

目次

サンプル 3年前/後を求める
  3ヶ月前/後を求める
  3日前/後を求める
  3時間前/後を求める(+分/秒)
  月初を表示するサンプル
  月末を表示するサンプル

3年前/後を求める

<script>
  // 1.年月日をセット
  const date1 = new Date(2017, 9);
  console.log(date1.toLocaleString()); //2017/10/1 0:00:00

  // 2. 年の計算
  date1.setFullYear(date1.getFullYear() + 3);
  console.log(date1.toLocaleString()); //2020/10/1 0:00:00
</script>

3年前を求める場合は、7行目の+3を-3にマイナスします。

3ヶ月前/後を求める

2017/10の3ヶ月後を求めるサンプルです。

<script>
// 1.年月日をセット
const date1 = new Date(2017,9);
console.log(date1.toLocaleString()); //2017/10/1 0:00:00

// 2. 月の計算
date1.setMonth(date1.getMonth() + 3);
console.log(date1.toLocaleString()); //2018/1/1 0:00:00
</script>

2017/10の3ヶ月後を求めます。

1.3行目で、2017,9(設定する月は-1にする)をセットしてDateオブジェクトを作成します。
2.7行目で、変更対象の月(date1)をgetMonthメソッドで取得します。
3.3(3ヶ月)を足します。(3ヶ月前を求める場合は-3にします。)
4.setMonthメソッドで再設定しています。

注:2017/1/30のgetMonth + 1は、2017/3/2となります。(2017/2は、2/28までのため)
日付を指定して月を計算する場合は、月初を求めてからgetMonthメソッドを使用して下さい。
月初を表示

 

3日前/後を求める

2017/1/2の3日前を求めるサンプルです。

<script>
// 1.年月日をセット
const date1 = new Date(2017,0,2);
console.log(date1.toLocaleString()); //2017/1/2 0:00:00

// 2. 日の計算
date1.setDate(date1.getDate() - 3);
console.log(date1.toLocaleString()); //2016/12/30 0:00:00
</script>

2017/1/2の3日前を求めます。

1.3行目で、2017,0,2(設定する月は-1にする)をセットしてDateオブジェクトを作成します。
2.7行目で、変更対象の日(date1)をgetDateメソッドで取得します。
3.3(3日前)を引きます。(3日後を求める場合は+3にします。)
4.setDateメソッドで再設定しています。

 

3時間前/後を求める(+分/秒)

2017/12/31 22:00の3時間後(+分/秒)を求めるサンプルです。

<script>
  // 1.年月日をセット
  const date1 = new Date(2017, 11, 31, 22, 00);
  console.log(date1.toLocaleString()); //2017/12/31 22:00:00

  // 2. 時間の計算
  date1.setHours(date1.getHours() + 3); // +3時間
  console.log(date1.toLocaleString()); //2018/1/1 1:00:00

  date1.setMinutes(date1.getMinutes() + 3); // +3分
  console.log(date1.toLocaleString()); //2018/1/1 1:03:00

  date1.setSeconds(date1.getSeconds() + 3); // +3秒
  console.log(date1.toLocaleString()); //2018/1/1 1:03:03
</script>

2017/12/31 22:00の3時間後を求めます。

1.3行目で、2017,11,31,22,00(設定する月は-1にする)をセットしてDateオブジェクトを作成します。
2.7行目で、変更対象の時間(date1)をgetHoursメソッドで取得します。
3.3(3時間)を足します。(3時間前を求める場合は-3にします。)
4.setHoursメソッドで再設定しています。

 

月初を表示するサンプル

2017年2月22日の月初を表示するサンプルです。

<script>
// 1.年月日をセット
const date1 = new Date(2017,1,22);
console.log(date1.toLocaleString()); //2017/2/22 0:00:00

// 2. 月初を表示
date1.setDate(1);
console.log(date1.toLocaleString()); //2017/2/1 0:00:00
</script>

2017年2月22日の月初を求めます。

1.3行目で、2017,1,22(設定する月は-1にする)をセットしてDateオブジェクトを作成します。
2.7行目で、setDateメソッドの引数に1をセットして月初を求めます。
→2017/2/1と表示されます。

 

月末を表示するサンプル

2017年2月22日の月末を表示するサンプルです。
setDate(0)で、前月の末日を取得することができます。

<script>
// 1.年月日をセット
const date1 = new Date(2017,1,22);
console.log(date1.toLocaleString()); //2017/2/22 0:00:00

// 2. 月初を表示
date1.setDate(1);
console.log(date1.toLocaleString()); //2017/2/1 0:00:00
// 3. 1ヶ月後を表示
date1.setMonth(date1.getMonth() + 1);
console.log(date1.toLocaleString()); //2017/3/1 0:00:00
// 4. 前月の末日を表示
date1.setDate(0);
console.log(date1.toLocaleString()); //2017/2/28 0:00:00
</script>

2017年2月22日の月末を求めます。

1.3行目で、2017,1,22(設定する月は-1にする)をセットしてDateオブジェクトを作成します。
2.7行目で、setDateメソッドの引数に1をセットして月初を求めます。(2017/2/1)
3.10行目で、getMonthメソッドに1(1ヶ月)を足します。(2017/3/1)
4.13行目のsetDate(0)で前月の末日を表示します。
→2017/2の月末の2017/2/28と表示されます。

7行目でsetDate(1)とする理由:
2017/1/30のgetMonth + 1は、2017/3/2となります。(2017/2は、2/28までのため)
日付を指定して月を計算する場合は、月初を求めてからgetMonthメソッドを使用します。

以下はMDNのDateオブジェクトのリンクです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date

関連の記事

JavaScript 現在日時を取得するサンプル
JavaScript 日時の差分を求めるサンプル

△上に戻る