Php 实时倒计时时钟问题

Php 实时倒计时时钟问题,php,javascript,date,time,Php,Javascript,Date,Time,基本上我现在有时钟显示时间,但是倒计时不起作用。我从源代码中获取了代码,并对其进行了修改 我试图做的是从我从数据库检索到的持续时间中获取倒计时 以下是我如何检索持续时间: //TRANSFORM MYSQL TIME INTO SECONDS $duration_array = explode(':', $duration); $length = ((int)$duration_array[0] * 3600) + ((int)$duration_array[1] * 60)

基本上我现在有时钟显示时间,但是倒计时不起作用。我从源代码中获取了代码,并对其进行了修改

我试图做的是从我从数据库检索到的持续时间中获取倒计时

以下是我如何检索持续时间:

//TRANSFORM MYSQL TIME INTO SECONDS

    $duration_array = explode(':', $duration);

    $length = ((int)$duration_array[0] * 3600) + ((int)$duration_array[1] * 60) + (int)$duration_array[2];

    //CALCULATE FINISH TIME WITH START TIME AND DURATION.
    $target_time = $length + time();
我正在成功地将其解析为JavaScript倒计时函数,并将其转换为JavaScript date()对象

然而,目前时钟不倒计时

以下是我的javascript:

function countdown_clock(target_time)
         {
         html_code = '<div id="countdown"></div>';

         document.write(html_code);

     var timetarget = new Date(target_time *1000);

         countdown(timetarget);

         }


function countdown(timetarget)
         {

     var Today = new Date();

     Todays_Year = Today.getFullYear() - 2000;
         Todays_Month = Today.getMonth();

         //Convert both today's date and the target date into miliseconds.
         Todays_Date = (new Date(Todays_Year, Todays_Month, Today.getDate(),Today.getHours(),Today.getMinutes(),Today.getSeconds())).getTime();

     Target_Date = timetarget.getTime();

         //Find their difference, and convert that into seconds.
         Time_Left = Math.round((Target_Date - Todays_Date) / 1000);

         if(Time_Left < 0)
            Time_Left = 0;

        var innerHTML = '';

         //More datailed.
        days = Math.floor(Time_Left / (60 * 60 * 24));
        Time_Left %= (60 * 60 * 24);
        hours = Math.floor(Time_Left / (60 * 60));
        Time_Left %= (60 * 60);
        minutes = Math.floor(Time_Left / 60);
        Time_Left %= 60;
        seconds = Time_Left;

    if (seconds < 10){seconds = '0' + seconds;}
    if (minutes < 10){minutes = '0' + minutes;}

        innerHTML = hours + ':' + minutes + ':' + seconds + ' secs' ;

        document.getElementById('countdown').innerHTML = innerHTML;

         //Recursive call, keeps the clock ticking.
        setTimeout('countdown('+timetarget+');', 1000);
        }
功能倒计时时钟(目标时间)
{
html_代码=“”;
编写(html_代码);
var timetarget=新日期(目标时间*1000);
倒计时(时间目标);
}
功能倒计时(时间目标)
{
var Today=新日期();
Todays_Year=Today.getFullYear()-2000;
Todays_Month=Today.getMonth();
//将今天的日期和目标日期转换为毫秒。
Todays\u Date=(新日期(Todays\u Year,Todays\u Month,Today.getDate(),Today.getHours(),Today.getMinutes(),Today.getSeconds()).getTime();
Target_Date=timetarget.getTime();
//找出它们之间的差异,并将其转换为秒数。
左时间=数学圆((目标日期-今天日期)/1000);
如果(左时间<0)
剩余时间=0;
var innerHTML='';
//更多的数据。
天数=数学楼层(剩余时间/(60*60*24));
剩余时间%=(60*60*24);
小时=数学楼层(剩余时间/(60*60));
剩余时间%=(60*60);
分钟=数学楼层(剩余时间/60);
剩余时间%=60;
秒=剩余时间;
如果(秒<10){seconds='0'+秒;}
如果(分钟<10){minutes='0'+minutes;}
innerHTML=hours+':'+minutes+':'+seconds+'secs';
document.getElementById('countdown')。innerHTML=innerHTML;
//递归调用,让时钟滴答作响。
setTimeout('倒计时('+timetarget+);',1000);
}
我似乎真的在为整个约会的事情苦苦挣扎,所以任何帮助都会很好


谢谢,

我认为问题在于您的
timetarget
变量丢失了它是
Date
对象的事实。我把它修好了,它似乎在工作(倒计时)

EDIT:此外,我认为Javascript可能已经搞糟了,因为您使用了
innerHTML
作为变量名,这是我所做的另一个更改


编辑2:这里有一些更新。

你在哪里循环倒计时,从javascript中看到的确切反应是什么?你提到它不是倒计时,但你在这里列出的倒计时函数中没有任何循环。我尝试的是,我用setTimeout()每1000毫秒调用一次倒计时函数。每次调用倒计时时,它都会获取当前时间并根据该时间找到差异,因此理论上,下一次时间会改变1秒。
Todays_Date=(new Date()).getTime()这里的这一点,我想我必须传递这些信息,所以它只包含我指定的值,而不是所有其他内容。