[PHP]倒计时到特定日期的特定时间

时间:2015-08-18 11:23:00

标签: php timer countdown countdowntimer

我正在自动倒计时,在不同的时间每天开始2-3次。

活动每7小时开始一次,所以有一天有4个活动,另外3个活动。

示例: http://i.stack.imgur.com/IvYbh.png

$monday    = array( '02:00', '09:00', '16:00', '23:00' );
$tuesday   = array( '06:00', '13:00', '20:00'          );
$wednesday = array( '03:00', '10:00', '17:00'          );
$thursday  = array( '00:00', '07:00', '14:00', '21:00' );
$friday    = array( '04:00', '11:00', '18:00'          );
$saturday  = array( '01:00', '08:00', '15:00', '22:00' );
$sunday    = array( '05:00', '12:00', '19:00'          );

如何使倒计时运行到下一个事件?

示例:如果是星期一,01:30,则应该说是30分钟

我已经完成了倒计时部分:

 $hours = floor($this->sec / 3600);
 $minutes = floor(($this->sec / 60) % 60);
 $seconds = $this->sec % 60;
 return "$hours" . ' hours ' . "$minutes" .  ' minutes ' . "$seconds" . ' seconds';

更新:我知道PHP不会自行更新。我会手动刷新页面。

1 个答案:

答案 0 :(得分:1)

function days_hours_minutes_from_now($date)
{
  $now = time();
  $your_date = strtotime($date);
  $datediff = $your_date - $now;
  echo "days: " .floor($datediff/(60*60*24));
  echo " hours: " .floor($datediff/(60*60)) % 24; //hours
  echo " minutes: " .floor($datediff/(60)) % 60; //minutes
  echo " seconds: " .$datediff % 60; //seconds
}

days_hours_minutes_from_now("2015-08-19 13:52:28");
  

天:1小时:0分钟:14秒:56

Hasn未经过彻底测试,但应该接近您正在寻找的内容。

您需要比较事件开始倒计时的时间。

然而,正如RiggsFolly正确指出的那样,除非您在javascript中执行此操作,否则您的倒计时不会在用户的浏览器中更新,除非他们刷新页面。

修改

现在,如果您想确保始终返回 next 事件之前的剩余时间,那么您可以循环显示一系列日期,按升序排序,并返回第一个结果日是非负值。如果任何日期超过当前日期/时间,则日期将等于-1