0

2つの日付を比較しようとしています.1つはテキストボックスにあり、もう1つ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');
    }


}

今日の時点で、orderdate 入力は 2013-03-07 に設定されています。datepicker から 2013 年 4 月 5 日を選択すると機能しません

以下はコンソールの出力です

["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 日になっています。

質問:なぜこのような動作になるのですか?

4

1 に答える 1

1

Dateオブジェクトの月数は 0 から始まります (1 月:0、…、4 月:3)。形式は不明ですo.selectedMonthが、解析された YYY-MM-DD 日付は次のように変更する必要があります

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

ところで、2 つのオブジェクトを互いにgetTime()比較する前に呼び出す必要はありません。それらは自動的にその番号にキャストされます。Date

于 2013-03-07T12:34:50.503 に答える