如何解决如何比较日期并在制表符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
列上尝试了过滤器,结果是:
- 平等比较器有效:
- 像比较器一样工作:
- 小于或等于比较器不起作用:
应该返回
但是返回
- 比较器大于等于不起作用:
应该返回
但是返回
您注意到同一件事吗?我做错了什么?你能确认吗?我知道这不是答案,但是如您所见,库可能存在一些问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。