我需要计算两个日期对象之间的经过时间

时间:2011-07-09 18:20:20

标签: javascript

我有一个从保存在数据库中的变种创建的日期对象。

var prevTime = Date(year,month,day,hour,minute);

我想计算这与当前时间之间的差异。

var thisTime = Date();

我这样做:

prevTime.getTime() - thisTime.getTime();

它给了我一个非常大的负数。我除以1000得到秒,然后除以3600得到几小时。我需要一个小时的经过时间。我最终得到一个像-756.00的数字。如果当前时间大于前一次,为什么数字为负数?我做错了什么?

谢谢,

斯科特

4 个答案:

答案 0 :(得分:14)

当前时间比上次更大,因此从较小的数字中减去较大的数字会得到负数。如果您想要时间的正差异,请撤消订单。这个问题还有更多吗?

此处示范:http://jsfiddle.net/jfriend00/NYSsp/

var prevTime = new Date(2011,1,1,0,0);  // Feb 1, 2011
var thisTime = new Date();              // now
var diff = thisTime.getTime() - prevTime.getTime();   // now - Feb 1
alert(diff / (1000*60*60*24));     // positive number of days

答案 1 :(得分:0)

第一个必须小一点才能得到否定。 您的第一次约会已过去。

以下是一个例子:

var a = new Date(2011,7,5,2,1,1) - new Date(2011,7,5,1,1,1);
alert(a); // 3600000 which is millisecond for 1 hour. Divide by this to get hours.

答案 2 :(得分:0)

如果你想要在网页上动态运行中的日期和时间以及登录时间,即时钟从java函数scipt的开始开始,还会给出你在应用程序或特定时间中在线的小时数,分钟数和秒数网页为此,只需在html正文中调用javascript函数。

<script type="text/javascript">
var second;
var first = new Date;
function date_time() {
    var id = 'Label1'
    date = new Date;
    second = date.getTime();
    year = date.getFullYear();
    month = date.getMonth();
    months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    d = date.getDate();
    day = date.getDay();
    days = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    h = date.getHours();
    if (h < 10) {
        h = "0" + h;
    }
    m = date.getMinutes();
    if (m < 10) {
        m = "0" + m;
        //min = min+1;
    }
    s = date.getSeconds();
    if (s < 10) {
        s = "0" + s;
        //sec = sec+1;
    }
    var timeDiff = second - first.getTime();
    var hours = Math.floor(timeDiff / (1000 * 60 * 60));

    timeDiff -= hours * (1000 * 60 * 60);



    var mins = Math.floor(timeDiff / (1000 * 60));

    timeDiff -= mins * (1000 * 60);

    var secs = Math.floor(timeDiff / 1000)
    timeDiff -= secs * 1000;

    result = 'LoginTime(HH:MM:SS) ' + hours + ':' + mins + ':' + secs + ' ' + days[day] + ' ' + months[month] + ' ' + d + ' ' + year + ' Clock(24hr): ' + h + ':' + m + ':' + s;
    document.getElementById(id).innerHTML = result;
    setTimeout('date_time("' + id + '");', '1000');
    return true;
}

作者:Santosh Kumar Murarkar

答案 3 :(得分:-1)

检查一下:

var first = new Date();
for(i = 0; i<10000; i++) // Some loop to make a little time pass
{
    i = i;
}
var second = new Date();

second.getTime() - first.getTime();