检查日期是否属于日期数组

我正在尝试检查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"); } 

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

你得到一个假阴性,因为比较2个日期对象比较他们的参考,而不是你想象的他们的

有几个选项,你可以在你的数组中存储Date.getTime()的结果,它只是日期的数字表示:

 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 = n$('#datepicker').datepicker('getDate').getTime(); if ($.inArray(DateOfOrder, holidayArray2013) > -1) ... 

这很好,如下所示: http : //jsfiddle.net/rRJer/

但是,如果您被限制为不更改假日数组,则可以循环以尝试找到正确的日期值:

 var isHoliday = false; for(var i=0;i 

演示在这里: http : //jsfiddle.net/3R6GD/

检查这个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()来比较两个日期,请参阅: 如何比较两个日期值与jQuery

你可以在你的日期使用.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/