簡體   English   中英

JavaScript日期小於或等於僅返回小於

[英]Javascript date less than or equal to returning only less than

我有一個jQuery datepicker工具,可以返回最大和最小日期。 日期是為了從數組中篩選出結果。 我使用jQuery.grep根據日期進行過濾。 由於某些原因,雖然> =可以工作,但<=僅返回小於。

// Function to filter based on date minimum
function filterListGreaterThan(filter, list, min){
    var result = jQuery.grep(list, function (obj){
        return new Date(obj[filter]) >= min;
    });
    return result;
};  

function filterListLessThan(filter, list, max){
    var result = jQuery.grep(list, function (obj){
        return new Date(obj[filter]) <= max;
    });
    return result;
};

因此,如果我輸入2013年11月1日至2013年11月5日,它將只返回11月1日至11月4日...我也不知道為什么。

編輯:Mac給了我正確的答案。 比較日期時,jQuery將時間設置為午夜。 因此,即使我在正確的日期進行搜索,它也不會在午夜之后出現。 這是更正的功能:

// Function to filter based on date maximum
function filterListLessThan(filter, list, max){
    var result = jQuery.grep(list, function (obj){
        //add time to date because jQuery sets the time at 00:00:00
        max.setHours(23,59,59);
        return new Date(obj[filter]) <= max;
    })
    return result;
};

看來問題可能是由於最大日期的時間分量設置為00:00 AM-發生在最大日期的數組中的所有項目都可能被過濾掉,因為它們發生在00:00 AM之后的某個時間。

要解決此問題,最好的方法是將最大日期更改為具有11:59:59 PM的時間分量,或者將最大日期設置為第二天的00:00 AM,並使用小於號(而不是小於或等於)。

不能完全確定我了解您要嘗試執行的操作,如果這不是您需要的操作,則表示歉意,但是如果您只想過濾一組日期,則可以嘗試以下操作。 您需要確保將一個Date對象與另一個Date對象進行比較,並確保格式化數組中的值以使之成為有效的Date對象。

我不確定jQuery函數的工作方式,但是使用香草javascript可以執行以下操作來過濾日期:

var list = ['2013,10,01','2013,10,02','2013,10,03','2013,10,04','2013,10,05',
           '2013,10,06'];

function filterListGreaterThan(list, min_date){

    var filtered_dates = [];

    for(var i=0; i < list.length; i++){

        var parts = list[i].split(','),
            test_date = new Date(parts[0],parts[1],parts[2]);

        if(test_date >= min_date){
            filtered_dates.push(test_date);

        }
    }

    return filtered_dates;
}  

var min_date = new Date('2013','10','04'),
    dates = filterListGreaterThan2(list, min_date);

console.log(dates);

//RETURNS:
//Mon Nov 04 2013 00:00:00 GMT+0000 (GMT Standard Time)
//Tue Nov 05 2013 00:00:00 GMT+0000 (GMT Standard Time)
//Wed Nov 06 2013 00:00:00 GMT+0000 (GMT Standard Time)
//

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM