Сколько дней/часов/минут/секунд осталось до указанного события на PHP
Как узнать сколько дней/часов/минут/секунд осталось до указанного события на 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);
}
echo downcounter('2016-07-18 23:59:59');
22.11.2015, 11:03 -
Категория: Статьи » Программирование » PHP