我有一个网页,当您点击开始巡逻时,会开始计算您点击按钮后的时间。因为我需要将它存储在服务器(ASP.NET)上,并且因为我想在重新加载页面时恢复计数,所以我从服务器获得了两个变量。第一个变量是他们点击开始巡逻按钮的服务器时间。第二个变量是本地时间与服务器时间的偏移量,因此我们在时间量上完全准确,并且由于本地时间而没有关闭。以下代码可以正常工作,但时间是关闭的。目前当地时间是19:53,如果此功能运行,则从“18:00:00”开始,然后上升到“18:00:01”,“18:00:02”等...如果当地时间是20:53它将是“19:00:00”。为什么这个功能会这样做?我该如何纠正这个?
patroltimeCurrentTimeoffset 是返回的偏移值(EG:-729)
patroltimeStart 是用户开始巡逻的服务器上的日期和时间(EG:2012年4月10日20:01:13)
function UpdatePatrolTime() {
var patroltimeCurrentTime = new Date();
patroltimeCurrentTime.setTime(patroltimeCurrentTime.getTime() + patroltimeCurrentTimeoffset);
var patroltimeStarted = new Date(patroltimeStart);
var CompareDateTime = new Date((patroltimeCurrentTime.getTime()-patroltimeStarted.getTime()));
currentHours = CompareDateTime.getHours();
currentMinutes = CompareDateTime.getMinutes();
currentSeconds = CompareDateTime.getSeconds();
currentHours = (currentHours < 10 ? "0" : "") + currentHours;
currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes;
currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds;
var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds
document.getElementById("patroltime").firstChild.nodeValue = currentTimeString;
}
&lt; span&gt;控制:
<span id="patroltime">00:00:00</span>
答案 0 :(得分:0)
我找到了来自&#34; How to get the time elapsed from a json date? &#34;的解决方案但是,如果有人能够弄清楚为什么我的解决方案不起作用(所以我可以奖励某些积分为我和其他人解释)我将奖励他们积分。我的解决方案是更改以下代码:
var patroltimeStarted = new Date(patroltimeStart);
var CompareDateTime = new Date((patroltimeCurrentTime.getTime()-patroltimeStarted.getTime()));
currentHours = CompareDateTime.getHours();
currentMinutes = CompareDateTime.getMinutes();
currentSeconds = CompareDateTime.getSeconds();
到
var patroltimeStarted = new Date(patroltimeStart);
var diff = (patroltimeCurrentTime-patroltimeStarted);
currentHours = Math.floor(diff / 3600000);
currentMinutes = Math.floor((diff % 3600000) / 60000);
currentSeconds = Math.floor(((diff % 3600000) % 60000) / 1000);