Javascript 从设定的日期和时间开始倒计时
我有一个网页,当你点击开始巡逻时,开始计算你点击按钮后的时间。因为我需要将其存储在服务器(ASP.NET)上,并且因为我想在他们重新加载页面时恢复计数,所以我从服务器获得了两个变量。第一个变量是他们单击开始巡逻按钮的服务器时间。第二个变量是本地时间与服务器时间的偏移量,因此我们对时间量是100%精确的,并且不会因为本地时间而关闭。下面的代码可以正常工作,但时间远远不够。当前本地时间为19:53,如果此函数运行,则从“18:00:00”开始,然后上升到“18:00:01”、“18:00:02”等。。。如果当地时间是20:53,那就是“19:00:00”。此函数为什么要执行此操作?如何更正此操作 patroltimeCurrentTimeoffset是返回的偏移值(例如:-729) patroltimeStart是用户在服务器上开始巡逻的日期和时间(例如:2012年4月10日20:01:13)Javascript 从设定的日期和时间开始倒计时,javascript,Javascript,我有一个网页,当你点击开始巡逻时,开始计算你点击按钮后的时间。因为我需要将其存储在服务器(ASP.NET)上,并且因为我想在他们重新加载页面时恢复计数,所以我从服务器获得了两个变量。第一个变量是他们单击开始巡逻按钮的服务器时间。第二个变量是本地时间与服务器时间的偏移量,因此我们对时间量是100%精确的,并且不会因为本地时间而关闭。下面的代码可以正常工作,但时间远远不够。当前本地时间为19:53,如果此函数运行,则从“18:00:00”开始,然后上升到“18:00:01”、“18:00:02”等。
函数更新时间(){
var patroltimeCurrentTime=新日期();
patroltimeCurrentTime.setTime(patroltimeCurrentTime.getTime()+patroltimeCurrentTimeoffset);
var patroltimeStart=新日期(patroltimeStart);
var CompareDateTime=新日期((patroltimeCurrentTime.getTime()-patroltimeStarted.getTime());
currentHours=CompareDateTime.getHours();
currentMinutes=CompareDateTime.getMinutes();
currentSeconds=CompareDateTime.getSeconds();
当前小时数=(当前小时数<10?:“)+当前小时数;
currentMinutes=(currentMinutes<10?“0”:“)+currentMinutes;
currentSeconds=(currentSeconds<10?“0”:“)+currentSeconds;
var currentTimeString=currentHours+“:”+currentMinutes+“:”+currentSeconds
document.getElementById(“patroltime”).firstChild.nodeValue=currentTimeString;
}
及对照组:
00:00:00
我从“”中找到了一个解决方案,但是如果有人能够找出我上面的解决方案不起作用的原因(这样我就可以为我和其他人的解释而给某人打分),我会给他们打分。我的解决方案是更改以下代码:
var patroltimeStarted = new Date(patroltimeStart);
var CompareDateTime = new Date((patroltimeCurrentTime.getTime()-patroltimeStarted.getTime()));
currentHours = CompareDateTime.getHours();
currentMinutes = CompareDateTime.getMinutes();
currentSeconds = CompareDateTime.getSeconds();
到
不是一个特定的解决方案,但我建议使用UTC之类的标准来处理所有日期。谢谢。我很快就会实施。这件事不急,因为这是本地公司的应用程序,而不是整个互联网。@GabrielGraves-patroltimeCurrentTimeoffset必须以毫秒为单位,patroltimeStart从何而来?它也应该是以毫秒为单位的数字,而不是日期字符串(除非您手动解析日期字符串以创建日期对象)。我会手动解析日期字符串,因为数据库具有实际的开始日期时间(这是我需要存储在数据库中的时间),而不仅仅是毫秒表示。偏移量工作正常,因此不会出现问题。请参阅我的答案以了解我的解决方案,如果您能找到我的更改原因或我引用的旧代码不正确的解释,我将给予分数。
<span id="patroltime">00:00:00</span>
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);