0

Firefox や IE では機能しない非常に単純な機能があります。洞察力があるかどうか疑問に思っています。

function compareDates(obj, fecha){
    var date1 = new Date( Date.parse(obj.value.replace(/-/g, " ")) );   
    var date2 = new Date( Date.parse(fecha.value.replace(/-/g, " ")) );

    if(date1 < date2){
        alert("Invalid Date");
    }
}

この関数は、たとえばa10-JUL-13と aを受け取ります。20-JUL-13

IE ではアラートが表示されませんが、Chrome ではアラートが表示されます。http://jsfiddle.net/ZDtVv/を参照してください。

4

2 に答える 2

1

Date.parseISO 日付が必要であり、これには完全な年が必要です。Chrome と Firefox はそれを理解しようとしますが、それに頼るべきではありません。

// This works
compareDates({value: '10-JUL-2013'}, {value: '20-JUL-2013'})

http://jsfiddle.net/ZDtVv/1/を参照してください

于 2013-07-10T20:35:56.167 に答える
0

これらの日付文字列は有効な日付文字列ではないため、実際のタイムスタンプとして NaN を持つ Date オブジェクトを取得します。そしてNaN < NaNテストは偽です。

仕様によると、無効な日付文字列の動作は未定義です。JavaScript の実装では、それらを NaN に変換したり、解析に必要なヒューリスティックを使用したりできます。たとえば、これらの日付は 13 年または 1913 年または 1413 年である可能性があり、これらはすべて仕様ごとに有効な動作です。

于 2013-07-10T20:37:33.297 に答える