日時が指定範囲の日時であるか判定
日時が指定範囲の日時であるか判定するには、次のような方法で実装できます。
関数定義
var isWithinRangeDays = function(targetDate, rangeStartDate, rangeEndDate) {
var targetDateTime, rangeStartTime, rangeEndTime,
startFlag = false endFlag = false;
if (!targetDate) return false;
var isArray = function(array) {
return (Object.prototype.toString.call(array) === '[object Array]') ? true : false;
};
// 日時をミリ秒で取得する関数
var getDateTime = function(dateObj) {
if (!dateObj) return;
if (typeof dateObj.getTime !== 'undefined') {
return dateObj.getTime();
} else if (isArray(dateObj)) {
if (dateObj.length === 3) {
return new Date(dateObj[0], Number(dateObj[1]) - 1, dateObj[2]).getTime();
} else {
return new Date(dateObj[0], Number(dateObj[1]) - 1, dateObj[2], dateObj[3], dateObj[4], dateObj[5]).getTime();
}
}
return;
};
targetDateTime = getDateTime(targetDate);
rangeStartTime = getDateTime(rangeStartDate);
rangeEndTime = getDateTime(rangeEndDate);
if (!targetDateTime) return false;
if (rangeStartDate) {
if (rangeStartTime && targetDateTime >= rangeStartTime) {
startFlag = true;
}
} else {
startFlag = true;
}
if (rangeEndDate) {
if (rangeEndTime && targetDateTime <= rangeEndTime) {
endFlag = true;
}
} else {
endFlag = true;
}
if (startFlag && endFlag) return true;
return false;
};
使い方
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 必須 |
targetDate | Date|number[] | 調べる日付 |
第二引数 必須 |
rangeStartDate | Date|number[] | 範囲の開始日時 |
第三引数 必須 |
rangeEndDate | Date|number[] | 範囲の終了日時 |
配列で指定する場合は、[年, 月, 日]
または[年, 月, 日,時 ,分 , 秒]
で指定します。
戻り値
範囲内であればtrue、そうだなければfalseを返します。
var result1 = isWithinRangeDays([2001, 3, 4], [2001, 3, 1], [2001, 3, 5]),
result2 = isWithinRangeDays([2001, 3, 4, 10, 0, 0], [2001, 3, 1], [2001, 3, 5]),
result3 = isWithinRangeDays(new Date(), new Date(2001, 2, 1), new Date());
alert(result1);
alert(result2);
alert(result3);