检查日期是否属于日期数组
我正在尝试检查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/