Javascript 更改日期后停止倒计时

Javascript 更改日期后停止倒计时,javascript,datetime,Javascript,Datetime,我试图为我的网站实现倒计时。我想给两个静态日期,并让倒计时运行。我发现一个示例使用一个硬编码日期,另一个日期作为新日期()。但当我将新日期()更改为硬代码值时,倒计时停止。如何解决这个问题 这些示例中唯一的区别是我更改了var date1=new Date()至var date1=新日期(“2017/07/22 20:30:00”)您提供的日期将永远不会更改,因为您在每个时间间隔内不断调用相同的函数(即date1和date2之间的差异将永远不会更改) 如果您想要倒计时,您需要使用一些相对变化

我试图为我的网站实现倒计时。我想给两个静态日期,并让倒计时运行。我发现一个示例使用一个硬编码日期,另一个日期作为新日期()。但当我将新日期()更改为硬代码值时,倒计时停止。如何解决这个问题


这些示例中唯一的区别是我更改了
var date1=new Date()
var date1=新日期(“2017/07/22 20:30:00”)

您提供的日期将永远不会更改,因为您在每个时间间隔内不断调用相同的函数(即
date1
date2
之间的差异将永远不会更改)

如果您想要倒计时,您需要使用一些相对变化的日期,类似于您提供的原始示例,或者保留一个偏移量(即,在启动流程时存储并持续使用偏移量进行计算),如下所示:

//存储相对日期以跟踪经过的时间
var start=新日期();
showDiff();
函数showDiff(){
//记录所经过的时间
var offset=新日期()-开始;
//储存你的日期
var date1=新日期(“2017/07/22 20:30:00”)-抵销;
var date2=新日期(“2015/07/30 21:59:00”);
//计算差异
var diff=Math.abs(Math.floor((date2-date1)/1000));
变量天数=数学下限(差值/(24*60*60));
var daysLeft=差异-天数*24*60*60;
var小时=数学楼层(daysLeft/(60*60));
var hoursLeft=daysLeft-小时*60*60;
var分钟=数学楼层(左小时/(60));
var minutesLeft=左小时-分钟*60;
var秒=数学楼层(左分钟/60);
var secondsLeft=分钟左-秒*60;
//输出
document.getElementById(“showTime”).innerHTML=“您在死亡前有“+days+”days“+hours+”hours“+minutes+”分钟和“+secondsLeft+”秒。”;
设置超时(showDiff,1000);
}

请在您的问题中包含任何相关的代码,因为这会大大增加回答的机会。人们不喜欢访问可能有危险的链接。@Jhecht这些都是Js fiddle链接,这很好,但人们仍然不太可能点击这些链接。StackOverflow上有一个代码段编辑器,非常类似于JSFIDLE,如果您可以这样做,请将它们添加到中如果您提供静态日期,那么在每个需要更新的时间间隔,代码都可以正常工作。这里没有问题,请投票支持描述。与问题无关,但您是否认为命名变量
var diff
(两次)的方法很奇怪?是的,很奇怪。它只是从原始答案中复制过来的,因为我不太关心其他代码(只是相对时间部分)。为了行动,我会把它清理一下。