日期范围过滤当天的过滤器

时间:2018-02-21 11:04:32

标签: javascript angularjs mongodb-query

我正在为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"

问题是,如果在两个输入中都设置了同一天,我就没有获取数据,但如果我设置了上一天/下一天,我就会这样做。我怀疑格式有什么关系,但我无法弄清楚如何解决这个问题。

1 个答案:

答案 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();
}