javascript - 查找与某个范围内的设定日期相交的最小开始日期
问题描述
我正在尝试在与设定日期相交的范围内选择最小日期:
假设我的设定日期是今天: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/
解决方案
您的代码有几个问题;首先,您没有从 中的对象中访问实际值start
和值,并且您也没有检查该范围今天是否实际重叠。这应该做你想要的。请注意,如果今天没有重叠的范围,我还修改了代码以返回;您可能需要检查该返回值。end
overlappedRanges
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>
推荐阅读
- python - 查找小计的总计
- node.js - throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))v
- dart - Dart - 返回字符串,而不是类的实例
- regex - 使用 sed 替换未知字符串的一部分
- c# - 如何从命令中获取输入并在另一个带有 dsharpplus 的 c# discord 中使用它
- lua - Gmod - SWRP (DarkRP) 问题
- java - 我如何通过 Touch (android) 将 imageview 置于其他 imageviews 之上
- firebase - 基于firebase中的子键值排序
- python-3.x - 如何隐藏或设置 hvplot 子图标题的位置
- javascript - 管道 API 响应 - Javascript