JavaScriptで「日時を加算、減算する方法」を解説します。
日時を加算したり減算するにはどうしたらいいですか?
日時を加算、減算するには、Dateオブジェクトを使用します。
Dateオブジェクトで日時を加算、減算する
日時を加算、減算するには、Dateオブジェクトを使用します。
setDateメソッドやsetMonthメソッドを使用することで、日付や月を加算、減算することができます。
また、setDateメソッドやsetMonthメソッドは、Dateオブジェクトのインスタンスに対して呼び出すことで、そのインスタンスのデータを書き換えることができます。
// 現在日時を取得
let date = new Date();
// 1日後の日時を取得 時間を加算する
date.setDate(date.getDate() + 1);
console.log(date);
// 1週間前の日時を取得 時間を減算する
date.setDate(date.getDate() - 7);
console.log(date);
// 1ヶ月後の日時を取得
date.setMonth(date.getMonth() + 1);
console.log(date);
上記のサンプルでは、setDateメソッドを使用し、現在日時に1日を加算します。getDate()メソッドを使用して現在の日付を取得し、その後に1を加算してsetDateメソッドに渡します。
また、setMonthメソッドを使用し、現在日時に1ヶ月を加算します。getMonth()メソッドを使用して現在の月を取得し、その後に1を加算してsetMonthメソッドに渡します。
指定日時に対する時間の加算、減算するサンプル
以下は、指定した日時に指定した時間を加算するサンプルです。
const date = new Date('2022-03-01T10:00:00');
const hoursToAdd = 3;
date.setHours(date.getHours() + hoursToAdd);
以下は、指定した日時から指定した時間を減算するサンプルです。
const date = new Date('2022-03-01T10:00:00');
const hoursToSubtract = 3;
date.setHours(date.getHours() - hoursToSubtract);
Dateオブジェクトのメソッドまとめ
DateオブジェクトのsetHours、setMinutes、setSeconds、setMillisecondsメソッドの解説を表にまとめました。
メソッド | 説明 |
---|---|
setHours(hoursValue, minutesValue?, secondsValue?, millisecondsValue?) | Dateオブジェクトの時刻を、指定した時、分、秒、ミリ秒に設定します。引数は、hoursValue(時)、minutesValue(分)は必須で、secondsValue(秒)、millisecondsValue(ミリ秒)は省略可能です。 |
setMinutes(minutesValue, secondsValue?, millisecondsValue?) | Dateオブジェクトの時刻を、指定した分、秒、ミリ秒に設定します。引数は、minutesValue(分)は必須で、secondsValue(秒)、millisecondsValue(ミリ秒)は省略可能です。 |
setSeconds(secondsValue, millisecondsValue?) | Dateオブジェクトの時刻を、指定した秒、ミリ秒に設定します。引数は、secondsValue(秒)は必須で、millisecondsValue(ミリ秒)は省略可能です。 |
setMilliseconds(millisecondsValue) | Dateオブジェクトの時刻を、指定したミリ秒に設定します。引数は、millisecondsValue(ミリ秒)は必須です。 |
DateオブジェクトのsetFullYear、setMonth、setDateメソッドの解説を表にまとめました。
メソッド | 説明 |
---|---|
setFullYear(yearValue, monthValue?, dayValue?) | Dateオブジェクトの年、月、日を、指定した年、月、日に設定します。引数は、yearValue(年)は必須で、monthValue(月)、dayValue(日)は省略可能です。 |
setMonth(monthValue, dayValue?) | Dateオブジェクトの月、日を、指定した月、日に設定します。引数は、monthValue(月)は必須で、dayValue(日)は省略可能です。 |
setDate(dayValue) | Dateオブジェクトの日を、指定した日に設定します。引数は、dayValue(日)は必須です。 |
月末を取得する方法
月末を取得するには、DateオブジェクトのsetDateメソッドを使用します。
setDateメソッドは、日付を加算、減算するためのメソッドですが、引数に0を指定することで、その月の末日を取得することができます。
// 現在日時を取得
let date = new Date();
// 現在の月末を取得
date.setDate(0);
console.log(date);
// 1ヶ月後の月末を取得
date.setMonth(date.getMonth() + 1);
date.setDate(0);
console.log(date);
上記のサンプルでは、setDateメソッドに0を指定することでその月の末日を取得することができます。
また、setMonthメソッドを使用し、現在日時に1ヶ月を加算した後、setDate(0)を使用することで、その月末を取得することができます。
うるう年を算出する方法
西暦が4で割り切れる年は原則としてうるう年とされますが、例外として100で割り切れる年は平年とされ、400で割り切れる年はうるう年とされます。
以下は、JavaScriptを使ってうるう年を計算する方法です。
function isLeapYear(year) {
if (year % 4 !== 0) {
return false; // 4で割り切れない場合はうるう年ではない
} else if (year % 100 !== 0) {
return true; // 4で割り切れて100で割り切れない場合はうるう年
} else if (year % 400 !== 0) {
return false; // 4で割り切れて100でも割り切れる場合はうるう年ではない
} else {
return true; // 4で割り切れてかつ100でも割り切れ、さらに400でも割り切れる場合はうるう年
}
}
この関数は、引数に渡された年がうるう年かどうかを判定し、trueまたはfalseを返します。
また、Dateオブジェクトには、getFullYearメソッドを使って年を取得できるので、以下のようにして現在の年がうるう年かどうかを判定することもできます。
const now = new Date();
const year = now.getFullYear();
console.log(isLeapYear(year)); // trueまたはfalse
日時の差を取得する方法
日時の差を取得するには、Dateオブジェクトを使用します。
Dateオブジェクトは、日付や時間を扱うためのオブジェクトで、日時の差を取得するための関数も持っています。
2つの日時の間の差を取得したい場合は、以下のようにします。
// 日時1
let date1 = new Date("2022-01-01");
// 日時2
let date2 = new Date("2022-01-31");
// 日時の差 (ms)
let diff = date2.getTime() - date1.getTime();
// 日時の差 (日)
let diffDays = diff / (1000 * 60 * 60 * 24);
console.log(diffDays + "日の差があります。");
上記のサンプルでは、date1に”2022-01-01″、date2に”2022-01-31″を入力し、それら2つの日時間の差を取得しています。
getTime()メソッドを使用して、2つの日時をミリ秒単位で取得し、その差を日単位に変換しています。
日時の扱うDateオブジェクトについて補足
日時を扱うには、Dateオブジェクトについて補足します。
new Date([日付/時刻])
Dateオブジェクトは、現在時刻や特定の日時を表すために使用されます。Dateオブジェクトを使用することで、現在時刻を取得したり、時間を指定して取得することができます。
現在時刻の取得方法
var date = new Date();
console.log(date);
文字列で日時を指定する方法
日時を表す文字列を渡すことで、日時を取得することもできます。
var date = new Date("2022-12-20");
console.log(date);
数値で日時を指定する方法
年、月、日、時、分、秒、ミリ秒の順に指定します。
var date = new Date(2022, 11, 20 , 11 , 10 , 55 , 500); //年月日、時分秒、ミリ秒
console.log(date);
Dateオブジェクトを使用する際には、ブラウザや環境によって異なる挙動をすることがあるため、動作確認を行うことをおすすめします。
まとめ
「日時を加算、減算する方法」について解説しました。
- 日時を加算、減算するには、Dateオブジェクトを使用する。
- DateオブジェクトのsetDateメソッドを使用して日付を加算、減算することができる。
- setDateメソッドに0を指定することで、その月の末日を取得することができる。
Dateオブジェクトを使って月末も取得できるのは便利ですね!
Dateオブジェクトを使用することで、日付や時間を扱う上での様々なニーズに対応することができます。
コメント