Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要计算两个日期对象之间经过的时间_Javascript - Fatal编程技术网

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

Javascript 我需要计算两个日期对象之间经过的时间,javascript,Javascript,我有一个从保存在数据库中的变量创建的日期对象 var prevTime = Date(year,month,day,hour,minute); 我想计算这个时间和当前时间之间的差值 var thisTime = Date(); 我正在这样做: prevTime.getTime() - thisTime.getTime(); 它给了我一个非常大的负数。我除以1000得到秒,然后除以3600得到小时。我需要以小时为单位的经过时间。我得到的数字是-756.00。如果当前时间大于前一时间,为什么数

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

var prevTime = Date(year,month,day,hour,minute);
我想计算这个时间和当前时间之间的差值

var thisTime = Date();
我正在这样做:

prevTime.getTime() - thisTime.getTime();
它给了我一个非常大的负数。我除以1000得到秒,然后除以3600得到小时。我需要以小时为单位的经过时间。我得到的数字是-756.00。如果当前时间大于前一时间,为什么数字为负数?我做错了什么

谢谢


Scott

当前时间大于前一时间,因此从较小的数字中减去较大的数字将得到一个负数。如果你想得到时间上的正差,则颠倒顺序。问题还不止这些吗

此处演示:


第一个一定要小一些,才能得到负数你的第一次约会已经过去。

以下是一个例子:

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.
选中此项:

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();
var first=新日期();

对于(i=0;i如果您希望在网页上动态运行日期和时间,以及登录时间,即时钟从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;
}

var第二;
var first=新日期;
函数日期\时间(){
变量id='Label1'
日期=新日期;
second=date.getTime();
年份=日期。getFullYear();
month=date.getMonth();
月份=新数组(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”);
d=date.getDate();
day=date.getDay();
天=新数组(“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”);
h=date.getHours();
if(h<10){
h=“0”+h;
}
m=date.getMinutes();
如果(m<10){
m=“0”+m;
//min=min+1;
}
s=date.getSeconds();
如果(s<10){
s=“0”+s;
//秒=秒+1;
}
var timeDiff=second-first.getTime();
var小时=数学楼层(时间差/(1000*60*60));
timeDiff-=小时*(1000*60*60);
var mins=数学层(时间差/(1000*60));
时间差-=分钟*(1000*60);
var秒=数学下限(时间差/1000)
时间差-=秒*1000;
结果='LoginTime(HH:MM:SS)'+hours+':'+mins+':'+secs+''+days[日]+''+month[月]+''+d+''+year+'时钟(24小时):'+h+':'+m+':'+s;
document.getElementById(id).innerHTML=result;
setTimeout('date_time('id+');'1000');
返回true;
}


Santosh Kumar Murarkar

因为你要从上一次时间中减去当前时间。你必须从当前时间中减去上一次时间:
ThistTime-prevTime
。可能是重复的。我道歉。我在输入问题时很紧张。我正在做ThistTime.getTime()-prevTime.getTime();当我调试或输出到控制台时,我看到当前日期比前一个日期大。我似乎仍然得到了太大的负数。有什么想法吗?请看我的小提琴以获得一个工作示例。这类代码需要是:var prevTime=新日期(年、月、日、小时、分钟);带有“new”如果您希望能够调用getTime()方法,请使用它。经过更多调试后,问题似乎来自我如何创建上一个日期对象。下面是一段代码片段:再次创建。Damnit!console.log('Yr:'+tcdYear+',Mn:'+tcdMon+',Dy:'+tcdDay+',Hr:'+tcdHour+',Mn:'+tcdMin);var tcdTime=new date(tcdYear,tcdMon,tcdDay,tcdHour,tcdMin);console.log('tcdTime:'+tcdTime.getTime()+','+tcdTime);var currentTime=new Date();console.log('currentTime:'+currentTime.getTime()+','+currentTime)控制台输出:1741Yr:2011,Mn:7,Dy:9,Hr:12,Mn:52/C:/Users/shill/Documents/bt/bt.js:1743tcdTime:1312915920000,周二2011年8月9日12:52:00 GMT-0600(山地夏时制)/C:/Users/shill/Documents/bt/bt.js:1745当前时间:1310237633608,2011年7月9日周六12:53:53 GMT-0600(山地夏时制)为什么第一次约会显示的是星期二而不是星期六?谢谢你的例子。正如我上面提到的,我发现了这个问题。永远不要阻止。使用instead谢谢你的例子。我发现了这个问题。我在上面描述了它。
<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;
}