无法在datepicker中解析日期

时间:2017-05-01 13:13:36

标签: jquery datepicker

我有一个问题来过滤日期范围HERE是项目。过滤器工作正常,但当我尝试过滤流动日期2016年8月1日和2016年9月1日 - 过滤器返回false。

一开始我认为过滤器的条件存在问题:

$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {

    var min = new Date($('#filter_start_date').val());
    var max = new Date($('#filter_end_date').val());
    var date_var =   new Date(data[4]); // use data for the date column

    if (
        ( isNaN( min ) && isNaN( max ) ) ||
        ( isNaN( min ) && date_var <= max ) ||
        ( min <= date_var   && isNaN( max ) ) ||
        ( min <= date_var   && date_var <= max )
        )
    {
        return true;
    }
    return false;


}

);

但是我意识到它可能与解析日期有关...

2 个答案:

答案 0 :(得分:0)

dateString中的{p> new Date(dateString)必须采用特定格式才能正常运行,例如,请参阅here了解某些指南。

让您的示例有效的快速解决方法是更改​​dateFormat选项中的datepicker

...    
dateFormat: 'yy-mm-dd',
...

如果您不喜欢显示的格式,datepicker中的选项可以更改。

答案 1 :(得分:0)

知道了 - 我将滤镜格式更改为yy-mm-dd,如下所示:

$.fn.dataTable.ext.search.push(
 function(settings, data, dataIndex) {

 function reverse_date(inputDate){

        var date_to_fix = inputDate.split("/");
        var fixed = date_to_fix.reverse().join('-');

        return fixed; // creates yy-mm-dd format
    };

var min = new Date(reverse_date($('#filter_start_date').val()));
var max = new Date(reverse_date($('#filter_end_date').val()));
var date_var = new Date(reverse_date((data[4]))); // use data for the age 
column

if (
  (isNaN(min) && isNaN(max)) ||
  (isNaN(min) && date_var <= max) ||
  (min <= date_var && isNaN(max)) ||
  (min <= date_var && date_var <= max)
) {
  return true;
}
return false;

} );

它解决了这个问题。 Here是项目。