2013-06-12 14 views
5

jQuery UI datepickerの日付が休日である日付の配列に属するかどうかを確認しようとしています。私が間違ってやっているかを把握することはできません:(日付が日付配列に属しているかどうかを調べる

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"); 
} 

編集:ちょうどholidayArray2013[0]しかし$.inArray(DateOfOrder, holidayArray2013)ようconsole.log(DateOfOrder);戻っThu Oct 03 2013 00:00:00 GMT+0200はまだ2つの日付オブジェクトを比較する比較ので、あなたは、偽陰性を取得している-1

+2

も私たちすることができますを参照してください。 – Jamiec

+1

'DateOfOrder'の値は何ですか? –

+1

同じ日付でも2つの別々のオブジェクトを探しています。日付を文字列として格納し、文字列を検索する必要があります(可能な方法の1つ)。 – Xotic750

答えて

16

を返します。あなたは、おそらく期待通りその参照なくその

いくつかのオプションがありますが、あなたはの結果を保存することができ

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

ありがとうございます。jamie、最も正確な回答であり、必要な選択肢を提供してくれました。 – 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(); 

次の2つの日付を比較するために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/

関連する問題