MomentJS inBetween始终返回false

问题描述

我正在使用Vue数据表,并且需要在两个日期之间搜索记录。我使用了moment.js inBetween 函数,这两个函数可以处理此问题。当我对日期进行硬编码时,它会返回正确的结果,但是函数似乎总是使用日期类型输入返回false 。请帮忙

var fDate = moment(this.startDate).format("DD-MM-YYYY")
var lDate = moment(this.endDate).format("DD-MM-YYYY")

tab = tab.filter(function (row) {
  var compareDate = moment(row["createdAt"]).format("DD-MM-YYYY")
  var comparison = moment(compareDate).isBetween(fDate,lDate) //  always returns false
  var t = moment("2010-10-20").isBetween("2010-10-19","2010-10-25") //returns true
  console.log(compareDate,fDate,lDate,comparison,t)
})

可以在此处查看演示:https://codesandbox.io/s/inspiring-river-kg4bs?file=/src/App.vue:281-294

解决方法

isBetween以类似瞬间的物体作为参数(在doc中引用)。顺便说一句,您只应使用format来显示目的

moment().isBetween(moment-like,moment-like);
var tab = this.tableData
var fDate = moment(this.startDate)
var lDate = moment(this.endDate)

tab = tab.filter(function (row) {
  var compareDate = moment(row["createdAt"])
  var comparison = moment(compareDate).isBetween(fDate,lDate)

  if (comparison) {
    return true
  } else {
    return false
  }
})