1

我正在尝试计算两次之间的经过时间。当计算 PM 到 AM 时,它会给我一个否定的结果,所以我需要在负数上加上 12 小时才能得到正确的经过时间。为此,我必须添加条件if ($some_result < 0)。它适用于php但不适用于js,我不知道为什么

演示:http: //jsfiddle.net/wH7sC/1/

function calculateTime() { //gets time elapsed between 2 time marks

            var valuestart = $("select[name='timestart']").val();
            var valuestop = $("select[name='timestop']").val();

             //create date format          
             var timeStart = new Date("01/01/2007 " + valuestart).getHours();
             var timeEnd = new Date("01/01/2007 " + valuestop).getHours();

             var hourDiff = timeEnd - timeStart;      

              if ( hourDiff < 0 ) { //this is not working
                 hourDiff += 12;
             }

             return hourDiff;

}



//prepare function on load
$(document).ready(function() {
    $("select").change(calculateTime);
    calculateTime();
});



//execute function when changing select options
$(function() {
    $("select").change(function() {
        $( "#result" ).val( calculateTime() );
    });
});
4

1 回答 1

4

这不是if声明失败。您需要添加 24,而不是 12:

http://jsfiddle.net/sparebyte/wH7sC/2/

我建议安装 Chrome、Firefox 或 IE9,打开 javascript 开发者控制台并使用该console.log(...)功能。我不推荐使用 IE9,它的输出让我想要。

于 2012-06-15T00:31:34.120 回答