1

関数が受け取る 2 つの日付の形式は、YYYY/MM/DDTHH:MM です。

年/月/日 時:分

その不明確を包み込む

function compareDates(start, end) {
    console.log("Start: " + start);
    console.log("END : " + end);

    var start1 = start.replace(/\T/g,' ')
    var start2 = new Date(start1);

    var end1 = end.replace(/\T/g,' ')
    var end2 = new Date(end1);

    console.log("Str 1: " + start1);
    console.log("Str 2: " + start2);    
    console.log("END 1: " + end1);
    console.log("END 2: " + end2);

    console.log((end - start));
    console.log((end - start) < 0);

    if ((end - start) < 0 || (end - start) == 0) {return false;}else{return true}
}

デバッグ前の元のコード

function compareDates(start, end) {
    start = new Date(start.replace(/\T/g,' '));
    end = new Date(end.replace(/\T/g,' '));
    if ((end - start) < 0 || (end - start) == 0) {return false;}else{return true}
}

コンソールはエラーログ用にあり、クロムではエラーなしで正常に動作し、終了日が開始日と同じかそれより前の場合は false を返します。

Web-works で実行すると、次の出力の問題が発生します Str 2: Invalid Date END 2: Invalid Date

私が理解していないのは、これがblackberry web-worksでは機能しないのに、chromeでは機能する理由と、これを解決するにはどうすればよいかということです。

ありがとう

4

1 に答える 1

2

正規表現で、「T」の前の「\」を削除しようとしましたか?

そのように先頭のスラッシュを使用する必要があるのは、その後に続く文字が正規表現エンジンにとって特別な意味を持つ場合のみです (大文字の T には意味がありません)。Chrome は寛容でスラッシュを無視しているように見えますが、他のブラウザーはそうではありません。

于 2012-07-24T14:57:12.190 に答える