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

问题描述 投票:0回答:1

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

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

示例: https://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 不会自行更新。我会手动刷新页面。

php timer countdown countdowntimer
1个回答
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

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

您需要将时间与事件开始的时间进行比较以获得倒计时。

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

编辑:

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

© www.soinside.com 2019 - 2024. All rights reserved.