我正在尝试在与设定日期相交的范围内选择最小日期:
假设我设定的日期是今天:11/19/2019
鉴于以下日期,我需要找到今天相交的事件的最短开始日期。 在这种情况下,这将是11/12/2019
.
| StartDate | EndDate |
| -----------| -----------|
| 11/19/2019 | 11/20/2019 |
| 11/01/2019 | 11/18/2019 |
| 11/14/2019 | 11/19/2019 |
| 11/17/2019 | 11/21/2019 |
| 11/12/2019 | 11/23/2019 |
| 11/18/2019 | 11/24/2019 |
| 11/13/2019 | 11/27/2019 |
这是我的小提琴尝试: https://jsfiddle.net/89shcxty/
你的代码有几个问题;首先,你没有从overlappedRanges
中的对象中访问实际的start
和end
值,你也没有检查范围今天是否真的重叠。这应该做你想要的。请注意,我还修改了代码以返回null
如果今天没有重叠的范围;您可能需要检查该返回值。
var overlappedRanges = [{
start: '11/19/2019',
end: '11/20/2019'
}, {
start: '11/01/2019',
end: '11/18/2019'
}, {
start: '11/14/2019',
end: '11/19/2019'
}, {
start: '11/17/2019',
end: '11/21/2019'
}, {
start: '11/12/2019',
end: '11/23/2019'
}, {
start: '11/18/2019',
end: '11/24/2019'
}];
function min_start_date(all_dates) {
min_dt = null;
today = new Date();
all_dates.forEach(function(v) {
let s = new Date(v.start);
let e = new Date(v.end);
if (s > today || e < today) return;
if (min_dt === null || s < new Date(min_dt)) {
min_dt = v.start;
}
});
return min_dt;
}
$('#overlapped').text(min_start_date(overlappedRanges));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="overlapped" style="color: red;"></span>
<br>
<span id="notOverlapped" style="color: green;"></span>