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]]]]]); |
- 上記構文は、Date インスタンスを生成します。
- 引数のmonthIndexは、月を表します。0から始まります。
- 以下はMDNのDateオブジェクトのリンクです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
関連の記事