我一直在使用以下代码:
var rangesInputRange1 = [
{ startDate: parseDate("15/04/2024"), endDate: parseDate("01/05/2024") },
{ startDate: parseDate("01/06/2024"), endDate: parseDate("30/06/2024") }
];
var rangesInputRange2 = [
{ startDate: parseDate("01/04/2024"), endDate: parseDate("14/04/2024") },
{ startDate: parseDate("01/07/2024"), endDate: parseDate("31/08/2024") }
];
function parseDate(dateString) {
var parts = dateString.split("/");
return new Date(parts[2], parts[1] - 1, parts[0]);
}
function isDateInRanges(date, ranges) {
return ranges.some(function(range) {
return date >= range.startDate && date <= range.endDate;
});
}
function countDaysInRange(startDate, endDate) {
var oneDay = 24 * 60 * 60 * 1000;
return Math.round(Math.abs((startDate - endDate) / oneDay));
}
jQuery('#start-date, #end-date').on('change', function() {
var startDate = parseDate(jQuery('#start-date').val());
var endDate = parseDate(jQuery('#end-date').val());
var daysInRange1 = isDateInRanges(startDate, rangesInputRange1) ? countDaysInRange(startDate, endDate) : 0;
var daysInRange2 = isDateInRanges(startDate, rangesInputRange2) ? countDaysInRange(startDate, endDate) : 0;
var inputRange1 = jQuery('input.checkbox1');
var inputNumber1 = jQuery('input.number1');
var inputRange2 = jQuery('input.checkbox2');
var inputNumber2 = jQuery('input.number2');
inputRange1.prop('checked', daysInRange1 > 0).trigger('change');
inputNumber1.val(daysInRange1).trigger('change');
inputRange2.prop('checked', daysInRange2 > 0).trigger('change');
inputNumber2.val(daysInRange2).trigger('change');
});
jQuery('#start-date, #end-date').trigger('change');
如果#Start-Date和#End-Date在相同的范围InputRange,我已成功.在这种情况下,代码运行得很好.
如果所选日期都在两个范围InputRange中,我如何计算天数InRange?(例如:Dates 10/04/2024到17/04/2024)
或所选日期仅部分在一个范围内输入范围?(例如:28/08/2024至03/09/2024).
(日期格式:日/月/年)