我正在使用codeigniter在php中的一个小应用程序。PHP时间差分每小时在网站上竞争
应用程序有一个jquery倒数计时器,当前比赛剩下的倒计时时间。竞争是每小时基础,Gloabal(我所说的全球表明,为大家比赛将在同一时间完成 - 以服务器时间)
这里是我使用的逻辑:
随着竞争是每小时和会一天24场比赛。所以我在做的是:我在数据库中创建了一个时间戳字段,并使用cron作业每小时更新(当前时间戳+1小时)。这次是竞争的结束时间。
然后,当用户要去应用程序时,我正在调用一个获取比赛结束时间和当前时间的功能。然后得到这个时间和时间的差异剩下我放在Java脚本计数downer显示时间离开。
现在的问题:
寄托都在工作,除了当时间是12比1计数器总是显示负时间的罚款。意味着时间差异正在消失。
我的尝试:
我试图把
date_default_timezone_set('Europe/London');
,但没有运气!
这里是我的代码:
$query="SELECT comp_end_time FROM competetions WHERE comp_type=1 ORDER BY comp_id DESC LIMIT 1";
$sql=mysql_query($query);
$row=mysql_fetch_array($sql);
date_default_timezone_set('Europe/London');
$end_time=strtotime($row['comp_end_time']);
$now=date("Y-m-d g:i:s");
$current_time=strtotime($now);
$time_diff=$end_time-$current_time;
$minutes=floor($time_diff/60);
$sec = $time_diff - ($minutes * 60);
$minutes=(strlen($minutes) == 1) ? '0'.$minutes: $minutes;
$sec=(strlen($sec) == 1) ? '0'.$sec: $sec;
$min1=substr($minutes, 0, 1);
$min2=substr($minutes, 1, 2);
$sec1=substr($sec, 0, 1);
$sec2=substr($sec, 1, 2);
$data=array(
'min1'=>$min1,
'min2'=>$min2,
'sec1'=>$sec1,
'sec2'=>$sec2
);
return $data;
}
这里是代码使用cron来更新时间:
function update_timer(){
date_default_timezone_set('Europe/London');
$now=date("Y-m-d g:i:s");
$currentTime=strtotime($now);
$timeAfterOneHour=$currentTime+60*60;
$new_hr=date("Y-m-d g:i:s",$timeAfterOneHour);
echo date("Y-m-d g:i:s",$currentTime).'<br>';
echo $new_hr;
mysql_query("UPDATE `zaggora1_hotpant`.`competetions` SET `comp_end_time` = '$new_hr' WHERE `competetions`.`comp_id` =1;");
}
有人知道为什么时间差来负? 任何建议使用不同的方式来完成这项任务?我必须使用codeigniter日期帮助等?
有什么特别的原因,你没有使用CI的数据库类? –
我更新时间从普通的PHP文件...因为使用cron – Jadzia
在mysql中comp_end_time的数据类型是什么? –