JavaScript 日時の加算と減算のサンプル(Dateオブジェクト)

JavaScriptの日時の加算と減算を行うサンプルです。
Dateオブジェクトを使用します。

目次

手順

日時の加算と減算は以下の手順で行います。

1.現在日時または指定日時を、Dateオブジェクトをnewして生成します。
2.変更対象の日時をgetメソッドで取得します。
3.取得した値を足すまたは引きます。
4.setメソッドで再設定します。

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>

3行目は、2017/10をセットしています。設定の月は-1にします。(2017,9)
7行目は、変更対象の月(date1)をgetMonthメソッドで取得して3を足し(3ヶ月)、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>

3行目は、2017/1/2をセットしています。設定の月は-1にします。(2017,0,2)
7行目は、変更対象の日(date1)をgetDateメソッドで取得して3を引いて(3日前)、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
</script>

3行目は、2017/12/31をセットしています。設定の月は-1にします。(2017,11,31)
7行目は、変更対象の時間(date1)をgetHoursメソッドで取得して3を足し(3時間)、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>

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>

7行目は、setDateメソッドの引数に1をセットして対象の月初を求めます。
10行目は、getMonthメソッドで1ヶ月後を求めます。(2017/3/1)
13行目は、setDate(0)で前月の末日を表示します。
→2017/2の月末の2017/2/28と表示されます。

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

 

ローカル時刻の表示するサンプル

ローカル時刻を表示するサンプルです。

<script>
const date1 = new Date();
console.log(date1.toLocaleString()); //2017/4/3 18:02:52

console.log('年:', date1.getFullYear());	
console.log('月:', (date1.getMonth() + 1)); //月は1足す
console.log('日:', date1.getDate());
console.log('曜日:', date1.getDay()); // 0は日曜日~6は土曜日
console.log('時:', date1.getHours());
console.log('分:', date1.getMinutes());
console.log('秒:', date1.getSeconds());
console.log('ミリ秒:', date1.getMilliseconds());
</script>

3行目は、ローカルの日時を表示しています。
5-12行目は、個別に値を取得しています。
6行目は、設定の月は-1になるので+1しています。
8行目は、曜日が数字で返ってきます。0は日曜日~6は土曜日になります。

 

Dateオブジェクト

new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);

関連の記事

JavaScript 日時の差分を求めるサンプル(Dateオブジェクト)

△上に戻る