@rusgayfer

Как сделать вывод до ... окончания события?

Нужно например вывести сколько времени осталось до события

function timeCountdown() {
    global $dateCountdown;

    $now_date = strtotime(date("Y-m-d H:i:s"));
    $future_date = strtotime($dateCountdown);
    $difference_days = $future_date - $now_date;
    $days = floor($difference_days/86400);
    $difference_hours = $difference_days % 86400;
    $hours = floor($difference_hours/3600);
    $difference_min = $difference_hours % 3600;
    $min = floor($difference_min/60);

    $array1 = array("день", "дня", "дней");
    $word1 = correctForm($days, $array1);
    $array2 = array("час", "часа", "часов");
    $word2 = correctForm($hours, $array2);
    $array3 = array("минута", "минуты", "минут");
    $word3 = correctForm($min, $array3);

    return ($days.' '.$word1.' '.$hours.' '.$word2.' '.$min.' '.$word3);
    printf('<div class="time"><center><h1>%s %s %s %s %s %s</h1> ДО ОКОНЧАНИЯ СОБЫТИЯ</center></div>', $days,$word1,$hours,$word2,$min,$word3);
}

$dateCountdown = '2017-12-31 00:00:00';
echo timeCountdown();


Как тут правильно выводить? Так вообще ничего не выводит

И этот код тоже не работает:

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;
	}

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('2017-12-31 23:59:59');
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ipokos
if($days > 0) $str .= declension($days,array('день','дня','дней')).' ';

А где у вас определена функ-я declension из второго примера?
И correctForm
$word1 = correctForm($days, $array1);
из первого?
Оба рабочие, но там где вы брали исходники, скорее всего еще есть часть "недобратого" кода
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы