如何比较日期并在制表符js上进行相应的过滤?

问题描述

我正在使用制表器js来查看报告中的数据。我想根据两个日期(开始和结束)对其进行过滤。另外,“日期”数据也不是我表中的字段。我已经尝试了几种方法来尝试将我的数据与日历中的开始日期和结束日期进行比较,但到目前为止都没有任何结果。任何帮助,将不胜感激!这就是我从日历中检索日期的方法(顺便说一句),因为我在数据中有日期,所以将它们的格式调整为MM / DD / YYYY。

let date1 = new Date(startD._d);
    startD._d = ((date1.getMonth() > 8) ? (date1.getMonth() + 1) : ('0' + (date1.getMonth() + 1))) + '/' + ((date1.getDate() > 9) ? date1.getDate() : ('0' + date1.getDate())) + '/' + date1.getFullYear()
    let date2 = new Date(endD._d);
    endD._d =((date2.getMonth() > 8) ? (date2.getMonth() + 1) : ('0' + (date2.getMonth() + 1))) + '/' + ((date2.getDate() > 9) ? date2.getDate() : ('0' + date2.getDate())) + '/' + date2.getFullYear()

这是我尝试将检索到的日期与数据中的日期进行比较的最后一次尝试:

function updateDate(){
        $("#example-table").tabulator("addFilter",[
            {field:"date",type:">=",value:startD._d},//returns values greater than or equal to start date
            {field:"date",type:"<=",value:endD._d},//returns values less than or equal to end date 
        ]);
    }

解决方法

之所以发生这种情况,是因为您在字符串上使用了数字过滤器,因此它只是在进行简单的字符串比较而不是日期比较。

制表器将不会自动假定文本字符串为日期。您需要使用一个自定义过滤器,该过滤器使用内置的JavaScript Date对象或诸如moment 之类的库(可能最好,因为它可以为人处理不同的日期格式)来比较两个日期并检查它们小于值

//custom filter for date of birth column
function dateFilter(data,value){
    //data - the data for the row being filtered
    //value- params object passed to the filter

    return moment(data.dob,"DD/MM/YYYY").diff(moment(value,"DD/MM/YYYY")) > 0;
}

//set filter
table.setFilter(dateFilter,"14/04/1983");

有关详细信息,请查看Custom Filter Documentation

,

好吧,我试过一次,意思是对Tabulator site上的日期过滤器进行100次测试,我唯一能说的是:Tabulator上的日期过滤器无法正常工作!

我在Date of birth列上尝试了过滤器,结果是:

  • 平等比较器有效:

enter image description here

  • 像比较器一样工作:

enter image description here

  • 小于或等于比较器不起作用:

应该返回

enter image description here

但是返回

enter image description here

  • 比较器大于等于不起作用:

应该返回

enter image description here

但是返回

enter image description here

您注意到同一件事吗?我做错了什么?你能确认吗?我知道这不是答案,但是如您所见,库可能存在一些问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...