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

I need to calculate an elapsed time between two date objects

本文关键字:对象 日期 之间 时间 经过 两个 计算      更新时间:2023-09-26

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

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

我想计算当前时间和当前时间的差值。

var thisTime = Date();

我正在做这个:

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

得到一个非常大的负数。除以1000得到秒,然后除以3600得到小时。我需要以小时为单位的时间。最后得到的是-756.00。如果当前时间比之前的时间大,为什么数字是负的?我做错了什么?

谢谢,斯科特

当前时间比以前的时间大,所以用较小的数减去较大的数得到负数。如果你想要得到正的时间差,就把顺序倒过来。还有别的问题吗?

这里的演示: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

第一个必须小于负数。你的第一次约会已经过去了

下面是一个例子:

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.

如果你想在网页上动态运行的日期和时间,也登录时间,即时钟开始从java函数脚本的开始,也给出了多少小时,分钟和秒,你在应用程序或特定的网页在线。

<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;
}

检查这个:

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();