如何从给定日期范围的数据表中筛选单列的记录



我的数据表中只有一个日期字段createdDate。以及给出开始日期和结束日期的2个下拉列表。我想做的是点击一个按钮后,记录应该被过滤掉。

<div class="col-md-6 col-sm-6"> 
<input type="date" class = "createdDateFilter" id="createdDateFrom" name="createdDateFrom">
</div>


<label class="col-md-3 col-sm-3" for="createdDateTo">Created Date(To)</label>
<div class="col-md-6 col-sm-6">
<input type="date" class = "createdDateFilter" id="createdDateTo" name="createdDateTo">
</div>
<div class="buttons">
<input class="btn btn-primary btn-sm" id="search" type="submit" value="Search">
</div>

我的JS文件:

// This will update the start date
$("#createdDateFrom").change(function () {
// currentdate.getMonth() + 1) + "/" + currentdate.getDate() + "/" + currentdate.getFullYear();
createdDateFrom = new Date($(this).val());
});
// This will update the end date
$("#createdDateTo").change(function () {
createdDateTo = new Date($(this).val());
});

在这之前我几乎是一片空白。这可能吗?我知道每一列的搜索输入过滤器,但我想要一个单独的按钮。谢谢

我刚刚在StackOverflow上看到了这个线程,它可以帮助您

用JavaScript 比较两个日期

他创建了一个类,你必须在代码中复制他的一个函数,如下所示:

function inRange(d,start,end) {
return (
isFinite(d=this.convert(d).valueOf()) &&
isFinite(start=this.convert(start).valueOf()) &&
isFinite(end=this.convert(end).valueOf()) ?
start <= d && d <= end :
NaN
);
}

所以根据他的anwser,你可以把它用在过滤函数中。

你必须在var.中获得你的数据数组

假设我们有

let arr = [/*your datas*/]

您可以简单地返回应用于"arr"的过滤结果

function getOnlyInRangeDateItems(arr, startDate, endDate) {
return arr.filter(item => inRange(item.createdDate, startDate, endDate))
}

最后,只需称之为:

let date1 = new Date($("#createdDateFrom").val())
let date2 = new Date($("#createdDateTo").val())
let datasInRange = getOnlyInRangeDateItems(arr, date1, date2)

最新更新