2013-06-12 70 views
5

我想檢查一個來自jQuery UI日期選擇器的日期是否屬於假期日期數組。想不通我做錯了什麼:(檢查日期是否屬於日期陣列

var holidayArray2013 = [new Date('October 3, 2013 00:00:00 GMT+0200'), new Date('December 25, 2013 00:00:00 GMT+0100'), new Date('December 26, 2013 00:00:00 GMT+0100')]; 
var DateOfOrder = $('#datepicker').datepicker('getDate'); 
if ($.inArray(DateOfOrder, holidayArray2013) > -1) { 
    console.log("is holiday"); 
} 

編輯:console.log(DateOfOrder);回報Thu Oct 03 2013 00:00:00 GMT+0200就像holidayArray2013[0]$.inArray(DateOfOrder, holidayArray2013)仍然返回-1

+2

我們也不能,除非你告訴我們,如果有錯誤,或者不給你所期望的結果。 – Jamiec

+1

「DateOfOrder」的價值是什麼? –

+1

即使可能是相同的日期,您正在尋找兩個獨立的對象。您需要將日期存儲爲字符串並搜索字符串(一種可能的方式)。 – Xotic750

回答

16

你得到一個假陰性,因爲比較2級日期比較的對象他們引用,而不是他們你或許預期。

有幾個選項,你可以存儲結果陣列中之後的日期只是一個數字表示:

var holidayArray2013 = [ 
     new Date('October 3, 2013 00:00:00 GMT+0200').getTime(), 
     new Date('December 25, 2013 00:00:00 GMT+0100').getTime(), 
     new Date('December 26, 2013 00:00:00 GMT+0100').getTime()]; 

,然後對比的是:http://jsfiddle.net/rRJer/

但如果你:

var DateOfOrder = n$('#datepicker').datepicker('getDate').getTime(); 
if ($.inArray(DateOfOrder, holidayArray2013) > -1) ... 

這表現在這裏也能正常工作,限制爲不更改節假日陣列,您可以循環以嘗試找到正確的日期值:

var isHoliday = false; 
for(var i=0;i<holidayArray2013.length;i++){ 
    if(holidayArray2013[i].getTime() == DateOfOrder.getTime()){ 
     isHoliday = true; 
     break; 
    } 
} 

演示是在這裏:http://jsfiddle.net/3R6GD/

+0

感謝傑米,接受這是最準確的答案,並提供我需要的替代方案。 – foozed

1

檢查這個http://jsfiddle.net/WNYRs/

var holidayArray2013 = [new Date('October 3, 2013 00:00:00 GMT+0200').getTime(), 
         new Date('December 25, 2013 00:00:00 GMT+0100').getTime(), 
         new Date('December 26, 2013 00:00:00 GMT+0100').getTime()]; 

並使用類似的東西:

var DateOfOrder = new Date($('#datepicker').datepicker({ dateFormat: 'yy-mm-dd' }).val()).getTime(); 

你必須使用Date.getTime()比較兩個日期,看到這一點:How to compare two date values with jQuery

0

您可以使用.valueOf()函數在你的日期,那麼$.inArray將做的工作:

var holidayArray2013 = [ 
    new Date('October 3, 2013 00:00:00 GMT+0200').valueOf(), 
    new Date('December 25, 2013 00:00:00 GMT+0100').valueOf(), 
    new Date('December 26, 2013 00:00:00 GMT+0100').valueOf() ]; 

var DateOfOrder = $('#datepicker').datepicker('getDate').valueOf(); 
if ($.inArray(DateOfOrder, holidayArray2013) > -1) { 
    console.log("is holiday"); 
} 

http://jsfiddle.net/mmeRD/

相關問題