Сколько дней/часов/минут/секунд осталось до указанного события на 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');



Просмотров: 3588
22.11.2015, 11:03 -

Категория: Статьи » Программирование » PHP