Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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_Html_Magento 1.9 - Fatal编程技术网

Javascript 带有动态日期的倒计时计时器

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

我正在为一个倒计时定时器编码,它将在每天上午11点重置,我呼叫的日期是动态的,这意味着日期每天都会改变。 一些我如何正确编码它有时显示正确的倒计时,但当我在windows系统上随机检查它时,它经常显示NAN NAN。

下面是我的代码-

<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();