比较2个日期一个是jquery对象,另一个是文本框

时间:2013-03-07 11:59:23

标签: javascript jquery-ui date

我正在尝试比较两个日期,一个是在文本框中写为YYYY-MM-DD,另一个是jquery Datepicker实例

我使用自定义包装函数调用该函数

datePicker('#edd', {onSelect: function(str, obj){ check_if_edd_less_OD(str, obj); }});

及以下是比较日期的JS函数

function check_if_edd_less_OD(s, o) {

    console.clear();

    var eddDate = new Date();
    eddDate.setDate(o.selectedDay);
    eddDate.setMonth(o.selectedMonth);
    eddDate.setYear(o.selectedYear);

    orderDate = $('#orderdate').val().split('-');

    console.log(orderDate);


    var odDate = new Date();
    odDate.setDate(parseInt(orderDate[2], 10));
    odDate.setMonth(parseInt(orderDate[1], 10));
    odDate.setYear(parseInt(orderDate[0], 10));


    console.log(eddDate);
    console.log(odDate);


    if (odDate.getTime() < eddDate.getTime()) {
        console.log('You shall Pass');
    } else {

        console.log('You shall NOT Pass');
    }


}
截至今天,订单日期输入设置为2013-03-07,如果我从datepicker中选择5 APR 2013它不起作用

以下是控制台的输出

["2013", "03", "07"]
Date {Fri Apr 05 2013 16:55:23 GMT+0500 (Pakistan Standard Time)}
Date {Sun Apr 07 2013 16:55:23 GMT+0500 (Pakistan Standard Time)}
You shall NOT Pass

正如您所看到的,console.log(eddDate);正在提供正确的输出,但console.log(odDate);正在给我2013年4月7日。

问题:为什么会出现这种情况?

1 个答案:

答案 0 :(得分:1)

Date objects的月份计数从零开始(1月:0,...,4月:3)。不确定o.selectedMonth的格式是什么,但解析后的YYY-MM-DD日期应更改为

odDate.setMonth(parseInt(orderDate[1], 10)-1);

顺便说一下,在将两个getTime()个对象相互比较之前,您不需要调用Date,它们会自动转换为该数字。