Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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,我有一个网页,当你点击开始巡逻时,开始计算你点击按钮后的时间。因为我需要将其存储在服务器(ASP.NET)上,并且因为我想在他们重新加载页面时恢复计数,所以我从服务器获得了两个变量。第一个变量是他们单击开始巡逻按钮的服务器时间。第二个变量是本地时间与服务器时间的偏移量,因此我们对时间量是100%精确的,并且不会因为本地时间而关闭。下面的代码可以正常工作,但时间远远不够。当前本地时间为19:53,如果此函数运行,则从“18:00:00”开始,然后上升到“18:00:01”、“18:00:02”等。

我有一个网页,当你点击开始巡逻时,开始计算你点击按钮后的时间。因为我需要将其存储在服务器(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)

函数更新时间(){
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);