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