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
関連の記事