0

この機能は Chrome では正常に動作していますが、IE や FF では動作しません。

MonthName YearNumber の値を取る 2 つのフィールドを検証しようとしています (スクリーンショットを参照)。

形

私はDate.parse()ミリ秒を取得するために使用してから、 if Start Date<=を比較しEnd Dateます。

function IsStartEndDtError(StartDt, EndDt) {
    //convert dates to miliseconds to compare if one is greater than other
    var StartDtMili = Date.parse(StartDt);
    var EndDtMili = Date.parse(EndDt);

    if (StartDtMili <= EndDtMili) {
        return false;
    }
    else {
        return true;
    }
}

Firebug に表示される内容:

フォーム2

4

2 に答える 2

2

日付の形式は広くサポートされていないため、Date.jsのようなライブラリを試すことができます:

Date.parse("November 2012")
// returns: Thu Nov 01 2012 00:00:00 GMT+0000 (GMT)

別のライブラリが必要ない場合は、月名を手動で数字に置き換えて、新しい日付文字列を作成できます。

specの「Section 15.9.1.15 Date Time String Format」を見ると、Ecmascript は完全な月名をサポートしていないようです。

Firefox の場合:

new Date("November 2012")
// Invalid Date
new Date("2012-11")
// Thu Nov 01 2012 00:00:00 GMT+0000 (GMT)

2 番目の日付形式はブラウザー間で標準化する必要がありますが、最初の日付形式はそうではありません。

于 2012-12-01T13:30:25.833 に答える
1

11 1999November 1999解析可能な形式ではありません。入力形式により柔軟な日付ライブラリを使用するか、入力を処理してその中の部分を識別する必要があります。

function IsStartEndDtError(StartDt, EndDt) {

    var months = {
        January: 0,
        February: 1,
        ...
    };

    //convert dates to miliseconds to compare if one is greater than other

    var StartDtMili = (new Date(StartDt.split(" ")[1], month[StartDt.split(" ")[0]])).getTime();
    var EndDtMili = (new Date(EndDt.split(" ")[1], month[EndDt.split(" ")[0]])).getTime();


    if (StartDtMili <= EndDtMili) {
        return false;
    }
    else {
        return true;
    }
}
于 2012-12-01T13:31:35.917 に答える