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()代码>这里的这一点,我想我必须传递这些信息,所以它只包含我指定的值,而不是所有其他内容。