-1

それは非常に簡単です.ifステートメントが決してtueではない理由がわかりません.

var sFrom = $('#from').val(); //2013-10-04
var sTo = $('#to').val(); //2013-10-06

var dFrom = Date.parse(sFrom); 
var dTo = Date.parse(sTo); 

var dFullDate = new Date(item.created*1000);
var sDate = dFullDate.getFullYear() + "-" + (dFullDate.getMonth()+1) + "-" + dFullDate.getDate();
var dDate = Date.parse(sDate); //2013-10-5 should work, but nothing works

if((dDate > dFrom) && (dDate < dTo)){
  insertItem(i, item);
}

アップデート

2 つの日付を比較しており、そのうちの 1 つは 1 桁の日または月 (10 未満の場合) です。だから私がしたことは、それを2桁に変換する関数を追加しただけで、比較が機能するようになりました。

function parseDateToYYYYMMDD(date){
    var year = date.getFullYear();
    var month = date.getMonth()+1;
    var day = date.getDate();

    if(month < 10){
        month = "0" + month;
    }

    if(day < 10){
        day = "0" + day;
    }

    var sDate = year + "-" + month + "-" + day;
    var dDate = Date.parse(sDate);
    return dDate;
}
4

1 に答える 1

1

使用しているブラウザーによっては、ECMAScript5 (約 4 年前) の時点で仕様に追加されたばかりのDate.parseその形式をサポートしていない場合があります。YYYY-MM-DD

仕様にはありませんでしたが、ほぼすべてのブラウザーがサポートしていますYYYY/MM/DD

たとえば、コード( source ) は Chrome で動作しますが、IE8 では動作しません。( source )の代わりに使用するように更新すると/-、Chrome と IE8 の両方で動作します。

もちろん、代わりに、いつでも自分で解析できます。

function parseYYYYMMDD(str) {
    var parts = str.split('-');
    return +new Date(
        parseInt(parts[0], 10),     // Year
        parseInt(parts[1], 10) - 1, // Month (starts with 0)
        parseInt(parts[2], 10)      // Day
    ); 
}

多くの日付処理を行っている場合は、 MomentJSなどの日付ライブラリをチェックする価値があるかもしれません。ただし、これだけのために追加するのはおそらくやり過ぎです。

于 2013-10-28T09:10:11.407 に答える