таймер — [PHP] Обратный отсчет до определенного времени в определенный день

Я делаю автоматический отсчет до события, которое начинается 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 не будет обновляться только сам по себе. Я обновлю страницу вручную.

0

Решение

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, ваш обратный отсчет не будет обновляться в браузере пользователя, если они не обновят страницу.

Редактировать:

Теперь, если вы хотите убедиться, что вы всегда возвращали время, оставшееся до следующий событие, затем вы можете просмотреть серию дат, отсортированных по возрастанию, и вернуть первый результат, где день является неотрицательным значением. Если какая-либо дата превышает текущую дату / время, день будет равен -1

1

Другие решения

Других решений пока нет …