Javascript 带有动态日期的倒计时计时器
我正在为一个倒计时定时器编码,它将在每天上午11点重置,我呼叫的日期是动态的,这意味着日期每天都会改变。 一些我如何正确编码它有时显示正确的倒计时,但当我在windows系统上随机检查它时,它经常显示NAN NAN。 下面是我的代码-Javascript 带有动态日期的倒计时计时器,javascript,html,magento-1.9,Javascript,Html,Magento 1.9,我正在为一个倒计时定时器编码,它将在每天上午11点重置,我呼叫的日期是动态的,这意味着日期每天都会改变。 一些我如何正确编码它有时显示正确的倒计时,但当我在windows系统上随机检查它时,它经常显示NAN NAN。 下面是我的代码- <div class="countdown"> <span>DEAL TIME LEFT : </span> <p id="demo"></p> </div> <scr
<div class="countdown">
<span>DEAL TIME LEFT : </span>
<p id="demo"></p>
</div>
<script>
var currentDate = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var year = currentDate.getFullYear();
//alert(year);
// Set the date we're counting down to
var countDownDate = new Date(day+" "+month+" "+year+", 11:00:00").getTime();
// Update the count down every 1 second
var x = setInterval(function() {
// Get todays date and time
var now = new Date().getTime();
// Find the distance between now an the count down date
var distance = countDownDate - now;
// Time calculations for days, hours, minutes and seconds
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
document.getElementById("demo").innerHTML = hours + " : "
+ minutes + " : " + seconds;
// If the count down is over, write some text
if (distance < 0) {
clearInterval(x);
document.getElementById("demo").innerHTML = "EXPIRED";
}
}, 1000);
</script>
剩余交易时间:
var currentDate=新日期(新日期().getTime()+24*60*60*1000);
var day=currentDate.getDate();
var month=currentDate.getMonth()+1;
var year=currentDate.getFullYear();
//警报(年);
//确定我们倒计时的日期
var countDownDate=新日期(日+“”+月+“”+年+“”,11:00:00”).getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
//天、小时、分钟和秒的时间计算
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
document.getElementById(“demo”).innerHTML=hours+“:”
+分钟+“:”+秒;
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
document.getElementById(“demo”).innerHTML=“过期”;
}
}, 1000);
即使我已经检查过,警报(日)、警报(月)、警报(年)所有这些都是正确的,但我仍然收到“NAN,NAN”错误您在这里遇到了问题
var countDownDate = new Date(day+" "+month+" "+year+", 11:00:00").getTime();
Date
构造函数无法分析您的字符串和.getTime()
返回NaN
而不是使用字符串。您可以使用Date
构造函数的其他参数
新日期(年、月、日、时、分、秒,
毫秒]]]
剩余交易时间:
var currentDate=新日期(新日期().getTime()+24*60*60*1000);
var day=currentDate.getDate();
var month=currentDate.getMonth();
var year=currentDate.getFullYear();
//警报(年);
//确定我们倒计时的日期
var countDownDate=新日期(年、月、日、11).getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
//天、小时、分钟和秒的时间计算
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
document.getElementById(“demo”).innerHTML=hours+“:”
+分钟+“:”+秒;
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
document.getElementById(“demo”).innerHTML=“过期”;
}
}, 1000);
我想你应该倒计时到上午11点,如果是11点以后,就倒计时到明天上午11点
下面创建的结束日期为今天11:00,如果在11:00之后,则为明天11:00。然后格式化剩余时间。然后有一个计时器,每秒钟调用一次,就在下一整秒钟之后,这样它就不会漂移
它只创建一个日期,并显示如何添加一天并将其设置为特定时间
希望这些评论足够了
函数showlaining(){
var endDate=新日期();
//如果超过1100,则添加一天
如果(endDate.getHours()>11){
endDate.setDate(endDate.getDate()+1);
}
//设定时间为上午11点;
结束日期.设定小时数(11,0,0,0);
//从现在到结束还有几秒钟
var diff=Math.ceil((endDate-Date.now())/1000);
//将时间显示为h:mm:ss
返回((diff/3.6e3 | 0)+':'+
('0'+((差异%3.6e3)/60 | 0)).slice(-2)+':'+
('0'+(差异%60)).slice(-2)
);
}
//在下一整秒之后,每秒钟跑步一次
(函数计时器(){
log(showlaining());
var lag=1020-(Date.now()%1000)
设置超时(定时器、滞后);
}());代码>将给出错误的月份,您仍然有var month=currentDate.getMonth()+1代码>。你看不到它,因为你只看时间@RobG-请详细说明,我不明白我到底错在哪里?@khusbu_sipl-这会创建一个日期,获取月份,添加1,然后使用+1个月创建另一个日期。它可能会显示正确的时间,因为月份不是结果的一部分,但它仍然会创建错误的日期。我已经发布了一个答案,与其说是回答你的具体问题,不如说是一个如何解决问题的例子。thanx RobG:)供你快速重播
var countDownDate = new Date(year, month, day,11).getTime();