Генератор форм

Для веб-мастера

Реклама


PHP. Сколько дней/часов/минут/секунд осталось до указанного события.

Рейтинг:
Дата: 4 июля 2013 Просмотры 18296 Комментарии 7

К написанию этого поста меня натолкнул твит @Dimox_ru, которого я читаю. Он просил порекомендовать скрипт на 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);
		}

Итак, у нас есть 2 функции:

  • downcounter() – функция счетчика обратного отсчета
  • declension() – вспомогательная функция, для склонения слов

Как работает функция downcounter()? Очень просто. На вход она принимает всего один параметр $date – это и есть дата Вашего события от которого необходимо вести отчет. Эта дата должна быть всегда больше текущей даты, иначе счетчик не запуститься ).

Дальше в скрипте я получаю разницу текущей даты  и даты события. После чего высчитываю сколько осталось дней/часов/минут/секунд и формирую эти значения в строку.

Результат работы этих функций можно увидеть на демонстрационной странице.

 

 

Использовать эту функцию нужно так:

	<?=downcounter('2013-12-31 23:59:59');?> 

На этом все. Спасибо.

Оцените эту статью:
Интересно почитать

    Получать новые материалы этого сайта на свой email адрес?

    Отправлять мне комментарии по эл. почте?

Реклама

Топ комментаторы

  • Иван (1)

Нашли ошибку в тексте

Система Orphus
https://biznesguide.ru/coding/193.html
4,15 из 5 на основе 33 оценок.
Твиттер Facebook Google plus RSS