我正在为AngularJS中的数据表设置一个相当简单的日期范围过滤器:
if (vm.datePopup.dateFrom.date) { //data extracted from "From" input
query.criteria.timestamp.$gte = vm.datePopup.dateFrom.date.toISOString();
} else {
vm.datePopup.dateFrom.date = query.criteria.timestamp.$gte = vm.minDate;
}
if (vm.datePopup.dateTo.date) { //data extracted from "To" input
query.criteria.timestamp.$lte = vm.datePopup.dateTo.date.toISOString();
}else {
vm.datePopup.dateTo.date = query.criteria.timestamp.$lte = new Date();
}
日期格式的示例是"2017-12-01T09:14:03.539Z"
。
问题是,如果在两个输入中都设置了同一天,我就没有获取数据,但如果我设置了上一天/下一天,我就会这样做。我怀疑格式有什么关系,但我无法弄清楚如何解决这个问题。
答案 0 :(得分:1)
我会使用moment.js并使用每天的完全合格时间来执行此操作:
if (vm.datePopup.dateFrom.date) { //data extracted from "From" input
query.criteria.timestamp.$gte = moment(vm.datePopup.dateFrom.date).startOf('day').toDate();
} else {
vm.datePopup.dateFrom.date = query.criteria.timestamp.$gte = moment(vm.minDate).startOf('day').toDate();
}
if (vm.datePopup.dateTo.date) { //data extracted from "To" input
query.criteria.timestamp.$lte = moment(vm.datePopup.dateTo.date).endOf('day').toDate();
} else {
vm.datePopup.dateTo.date = query.criteria.timestamp.$lte = moment().endOf('day').toDate();
}