2015-08-18 2 views
0

Я делаю автоматический обратный отсчет до события, которое начинается 2-3 раза в день в разное время.[PHP] Отсчет времени до определенного времени в определенный день

Событие начинается через каждые 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'   ); 

Как сделать обратный отсчет бежать к следующему событию ?

Пример: если это понедельник, 1:30, он должен сказать 30мин оставил

Я уже сделал отсчет часть:

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

Update: Я знаю, что PHP won't обновлять только на себя. Я обновляю страницу вручную.

+0

Какой бит вам нужен? Что случилось с кодом обратного отсчета, который у вас есть? –

+0

Мне кажется, что если вы хотите, чтобы это отображалось на веб-странице, вам нужно сделать это в javascript. В противном случае, если я оставлю страницу открытой в течение часа, coundown не изменится. – RiggsFolly

+0

Извините, но это очень похоже на код **, который мне нужен **. Голосуйте, чтобы приблизиться к широкому. – RiggsFolly

ответ

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

Edit:

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

+0

Возможно, я был слишком неясен, я уже получил эту часть, но мне нужна функция, которая автоматически дает мне дату следующего события. – Justinfailber

+0

@ user4375106 В ближайшее время я включу решение в свой ответ. –

+0

Как сделать трюк foreach без жестко заданных дат? Я понимаю, что могу сделать foreach до тех пор, пока он не станет отрицательным, но я не хочу вводить даты в течение следующих 12 месяцев. И это возможно, потому что каждую неделю в то же время – Justinfailber

Смежные вопросы