JavaScript日付比較 (時間無視)
JavaScriptにおける日付の比較(時間比較なし)
JavaScriptでは、日付オブジェクトを比較して、その日付部分のみを比較し、時間部分を無視することができます。この方法を使用すると、2つの日付が同じ日であるかどうかを判断できます。
方法1: getDate()
、getMonth()
、getFullYear()
を使用
- それぞれの値を比較します。
- 各日付オブジェクトから日、月、年を取得します。
function compareDatesOnly(date1, date2) {
return date1.getDate() === date2.getDate() &&
date1.getMonth() === date2.getMonth() &&
date1.getFullYear() === date2.getFullYear();
}
// 例
const date1 = new Date("2023-12-31");
const date2 = new Date("2023-12-31 23:59:59");
if (compareDatesOnly(date1, date2)) {
console.log("日付部分は同じです");
} else {
console.log("日付部分は異なります");
}
方法2: toISOString()
を使用
- 文字列の最初の10文字(年、月、日)を比較します。
- 各日付オブジェクトをISO 8601形式の文字列に変換します。
function compareDatesOnly(date1, date2) {
return date1.toISOString().slice(0, 10) === date2.toISOString().slice(0, 10);
}
方法3: getTime()
と剰余演算を使用
- 抽出した値を比較します。
- 1日(24時間 * 60分 * 60秒 * 1000ミリ秒)で剰余演算を行い、日付部分のみを抽出します。
function compareDatesOnly(date1, date2) {
const dayMs = 24 * 60 * 60 * 1000;
return Math.floor(date1.getTime() / dayMs) === Math.floor(date2.getTime() / dayMs);
}
JavaScriptにおける日付比較(時間無視)のコード例
function compareDatesOnly(date1, date2) {
return date1.getDate() === date2.getDate() &&
date1.getMonth() === date2.getMonth() &&
date1.getFullYear() === date2.getFullYear();
}
// 例
const date1 = new Date("2023-12-31");
const date2 = new Date("2023-12-31 23:59:59");
if (compareDatesOnly(date1, date2)) {
console.log("日付部分は同じです");
} else {
console.log("日付部分は異なります");
}
解説
- 例:
date1
とdate2
は同じ日付ですが、異なる時刻です。compareDatesOnly
関数を呼び出し、日付部分のみが比較されます。- 結果は
true
となり、日付部分は同じであることが確認されます。
compareDatesOnly
関数:- 2つの日付オブジェクトを受け取ります。
- 日、月、年の値を比較し、すべて一致する場合に
true
を返します。
function compareDatesOnly(date1, date2) {
return date1.toISOString().slice(0, 10) === date2.toISOString().slice(0, 10);
}
compareDatesOnly
関数:- 文字列の最初の10文字(年、月、日)を比較し、一致する場合に
true
を返します。
- 文字列の最初の10文字(年、月、日)を比較し、一致する場合に
function compareDatesOnly(date1, date2) {
const dayMs = 24 * 60 * 60 * 1000;
return Math.floor(date1.getTime() / dayMs) === Math.floor(date2.getTime() / dayMs);
}
compareDatesOnly
関数:
方法4: ライブラリを使用
JavaScriptのエコシステムには、日付操作を簡素化するための多くのライブラリが存在します。これらのライブラリは、日付の比較やフォーマット、操作などの機能を提供します。
例: Moment.js
const moment = require('moment');
function compareDatesOnly(date1, date2) {
return moment(date1).isSame(date2, 'day');
}
isSame
メソッドを使用して、2つの日付が同じ日であるかどうかを比較します。moment
ライブラリを使用します。
方法5: カスタム関数を作成
より柔軟な比較を行うために、カスタム関数を作成することもできます。
function compareDatesOnly(date1, date2, granularity) {
switch (granularity) {
case 'day':
return date1.getDate() === date2.getDate() &&
date1.getMonth() === date2.getMonth() &&
date1.getFullYear() === date2.getFullYear();
case 'month':
return date1.getMonth() === date2.getMonth() &&
date1.getFullYear() === date2.getFullYear();
case 'year':
return date1.getFullYear() === date2.getFullYear();
default:
throw new Error('Invalid granularity');
}
}
compareDatesOnly
関数:- 2つの日付オブジェクトと比較の粒度(日、月、年)を受け取ります。
- 粒度に応じて、適切な比較を行います。
javascript date comparison