Скрипт на пхп, который выводит оставшееся время до введенной даты.
Как на PHP рассчитать время до указанного события
Приступим к коду скрипта:
/** * Счетчик обратного отсчета * * @param mixed $date * @return */ function downcounter($date){ $check_time = strtotime($date) - time(); if($check_time <= 0){ return false; } $days = floor($check_time/86400); $hours = floor(($check_time%86400)/3600); $minutes = floor(($check_time%3600)/60); $seconds = $check_time%60; $str = ''; if($days > 0) $str .= declension($days,array('день','дня','дней')).' '; if($hours > 0) $str .= declension($hours,array('час','часа','часов')).' '; if($minutes > 0) $str .= declension($minutes,array('минута','минуты','минут')).' '; if($seconds > 0) $str .= declension($seconds,array('секунда','секунды','секунд')); return $str; } /** * Функция склонения слов * * @param mixed $digit * @param mixed $expr * @param bool $onlyword * @return */ function declension($digit,$expr,$onlyword=false){ if(!is_array($expr)) $expr = array_filter(explode(' ', $expr)); if(empty($expr[2])) $expr[2]=$expr[1]; $i=preg_replace('/[^0-9]+/s','',$digit)%100; if($onlyword) $digit=''; if($i>=5 && $i<=20) $res=$digit.' '.$expr[2]; else { $i%=10; if($i==1) $res=$digit.' '.$expr[0]; elseif($i>=2 && $i<=4) $res=$digit.' '.$expr[1]; else $res=$digit.' '.$expr[2]; } return trim($res); }
- downcounter() – функция счетчика обратного отсчета
- declension() – вспомогательная функция, для склонения слов
Вводим дату события, которая обязательно должна быть больше текущей. Применять функцию подсчета даты можно так:
<?=downcounter('2020-11-28 22:29:29');?>
Как вы понимаете, вешать скрипт, который отправляет ajax запрос на сервер каждую секунду, не очень хорошо :). В следующих статьях вы узнаете как при помощи js показывать актуальное время.