0

ロジックが列0(時間のリスト)を24時間のJavaScriptクロックと比較していて、時間がどれだけ近いかに応じて、行に信号機の配色を返すという状況があります。

問題は、その23:00(11pm)で、私の時間列に「2:10 am」(翌日)と表示されているアイテムがある場合です。私のロジックは遅い時間だと考え、明日のアイテムを認識しません。私の色分けロジックは機能しますが、cell [0]の日付がシステムの日付(jsクロック)と等しい場合にのみこれを実行する必要があります。

    //date time object 
        var t = new Date();

    // loops through each row
        for (i = 0; i < rows.length; i++) {
        cells = rows[i].getElementsByTagName('td');

        //configures the clock
        var hm = cells[0].innerText.split(":");
        t.setHours(hm[0], hm[1], 0, 0);
        var r = (t.getTime() - currentTime.getTime()) / 1000 / 60 / 60;

        //logic  executed

             if (r <= 0.25 && cells[1].innerText == false)
                rows[i].className = "ewTableRowConditionalRed";

            else if (r > 0.25 & r <= 0.5 && cells[1].innerText == false)
                rows[i].className = "ewTableRowConditionalYellow";

            else if (r > 0.5 & r <= 2 && cells[1].innerText == false)
                rows[i].className = "ewTableRowConditionalGreen";

    }
4

1 に答える 1

0

最初に2つのものの日付(datetimeではなく)を最初に比較する必要があるようです。これは、getYear()、getMonth()、getDate() メソッドを使用して行うことができます。

var origDate = new Date(); //or the you're getting from the td
var roundedDate = new Date(origDate.getYear(), origDate.getMonth()+1, origDate,getDay()); 

getMonth() は 0 から 11 までの数値を返すことに注意してください。

コードが異なるタイムゾーンで実行される可能性がある場合は、UTC 日付に変換して比較することをお勧めします。

于 2013-03-15T01:12:57.373 に答える