Оставшееся время

15.11.2013

Иногда, необходимо посчитать оставшееся время до конца какого либо события, будь то даже конец распродажи. В PHP есть замечательная функция strftime(), но она сильно зависит от платформы и у меня выдавала немного "сдвинутое" время, поэтому я решил написать свою функцию.

Функция принимает в качестве параметра дату-время, до который будет отсчёт и возвращает количество дней, если осталось меньше одного дня, то вовращаются часы и минуты

/**
 * Возвращает оставшееся время
 * @param $expires_date
 * @return string
 */
function timeToLeft($timeExpires) {
	//Осталось времени в int
	$time       = abs(strtotime($timeExpires) - time());
	//Осталось дней
	$days      = floor($time / (3600 * 24));
	if ($days == 0) {
		//Осталось часов/минут
		$hours     = floor(($time - ($days * 3600 * 24)) / 3600);
		$minutes   = floor(($time - ($days * 3600 * 24) - ($hours * 3600)) / 60);
		$timeStr    = (($hours > 0) ? $hours.' часов' : '').$minutes.' минут';
	} else {
		$timeStr    = $days." ".Yii::t('app', 'day', array($days));
	}
	return "До конца события: {$timeStr}";
}