【问题标题】:MomentJS inBetween always returning falseMomentJS inBetween 总是返回 false
【发布时间】:2020-12-12 02:10:27
【问题描述】:

我正在研究 Vue Datatable 并且需要在两个日期之间搜索记录。我使用了 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

【问题讨论】:

    标签: javascript date vue.js momentjs date-parsing


    【解决方案1】:

    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
      }
    })
    

    【讨论】:

    • 哇....非常感谢!!...虽然我阅读了文档...我不太明白瞬间的含义...现在我明白了。 :)
    • @user3595524 你可以想到像由moment(...)初始化的对象一样的瞬间对象
    • 对...所以放置格式('DD-MM-YYYY')正在改变它的类型?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2021-11-05
    • 2018-11-05
    • 2019-05-06
    • 2017-04-29
    • 2013-04-30
    相关资源
    最近更新 更多