我有一个从保存在数据库中的变种创建的日期对象。
var prevTime = Date(year,month,day,hour,minute);
我想计算这与当前时间之间的差异。
var thisTime = Date();
我这样做:
prevTime.getTime() - thisTime.getTime();
它给了我一个非常大的负数。我除以1000得到秒,然后除以3600得到几小时。我需要一个小时的经过时间。我最终得到一个像-756.00的数字。如果当前时间大于前一次,为什么数字为负数?我做错了什么?
谢谢,
斯科特
答案 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();