11

我正在尝试检查来自 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

4

3 回答 3

32

您会得到一个误报,因为比较 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<holidayArray2013.length;i++){
    if(holidayArray2013[i].getTime() == DateOfOrder.getTime()){
        isHoliday = true;
        break;
    }
}

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

于 2013-06-12T14:08:52.113 回答
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()来比较两个日期,请参阅:如何使用 jQuery 比较两个日期值

于 2013-06-12T14:09:26.480 回答
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/

于 2013-06-12T14:16:01.950 回答