[HELP]Реализация функции.. date :) в обратном порятке

Статус
В этой теме нельзя размещать новые ответы.

saylar_06

Создатель
Регистрация
7 Мар 2009
Сообщения
42
Реакции
0
Доброго времени суток! Вот приспичило сделать функцию, и даже не знаю с чего начать :)

В общем суть функции такова, есть переменная $date = "28.05.2008"; //К примеру

Хочется создать функцию для обработки этой даты, чтоб на выходе получилось что то типа 2 года 3 месяца назад, или 7 дней назад, или же 23 дня назад :)

В общем у кого есть какие идеи пишите, очень надеюсь на вашу помощь...

P.S Хоть подскажите с чего начать, хотя приблизительно я знаю, буду эксперементировать, к стати выдел такое на WordPress(видел на сайте(PHP кода не видел))
 
PHP:
function dates_range($date1, $date2){
  if ($date1<$date2){
    $dates_range[]=$date1;
    $date1=strtotime($date1);
    $date2=strtotime($date2);
	return date('z',$date2-$date1);
  }
}

например, вернет разницу в датах в днях, если их разница меньше 365...вот попробуй отсюда начать думать
 
PHP:
function timeleft( $begin,$end ) {

	$dif = $end - $begin;

	$years = intval($dif/(60*60*24*365));
	$dif = $dif - ($years*(60*60*24*365));

	$months = intval($dif/(60*60*24*30));
	$dif = $dif - ($months*(60*60*24*30));

	$weeks = intval($dif/(60*60*24*7));
	$dif = $dif - ($weeks*(60*60*24*7));

	$days = intval($dif/(60*60*24));
	$dif = $dif - ($days*(60*60*24));

	$hours = intval($dif/(60*60));
	$dif = $dif - ($hours*(60*60));

	$minutes = intval($dif/(60));
	$seconds = $dif - ($minutes*60);

	$s = "";

	if($years == 1) {
		$s.= $years."&nbsp;год&nbsp;";
	}

	elseif($years > 1) {
		$s.= $years."&nbsp;года&nbsp;";
	}

	if($months == 1) {
		$s.= $months."&nbsp;месяц&nbsp;";
	}

	elseif($months > 1) {
		$s.= $months."&nbsp;месяцев&nbsp;";
	}

	if($weeks == 1) {
		$s.= $weeks."&nbsp;неделя&nbsp;";
	}

	elseif($weeks > 1) {
		$s.= $weeks."&nbsp;недель&nbsp;";
	}

	if($days == 1) {
		$s.= $days."&nbsp;день&nbsp;";
	} else if($days > 1) {
		$s.= $days."&nbsp;дней&nbsp;";
	}

	if($hours == 1) {
		$s.= $hours."&nbsp;час&nbsp;";
	} else if($hours > 1) {
		$s.= $hours."&nbsp;часов&nbsp;";
	}

	if($minutes == 1) {
		$s.= $minutes."&nbsp;минута";
	} else if($minutes > 1) {
		$s.= $minutes."&nbsp;минут";
	}

	return $s;
}

Простенький пример - не является идеальным решением, но суть раскрывает.
 
на php 5.3 стандартный class - DateTime
PHP:
$date_start = new DateTime('28.05.2008');
$date_end = new DateTime('NOW');

print_r(date_diff($date_start,$date_end));
 
PHP:
function timeleft( $begin,$end ) {
	$dif = $end - $begin;
	$years = intval($dif/(60*60*24*365));
	$dif = $dif - ($years*(60*60*24*365));
	$months = intval($dif/(60*60*24*30));
	$dif = $dif - ($months*(60*60*24*30));
	$weeks = intval($dif/(60*60*24*7));
	$dif = $dif - ($weeks*(60*60*24*7));
	$days = intval($dif/(60*60*24));
	$dif = $dif - ($days*(60*60*24));
	$hours = intval($dif/(60*60));
	$dif = $dif - ($hours*(60*60));
	$minutes = intval($dif/(60));
	$seconds = $dif - ($minutes*60);
	$s = "";
	if($years == 1) {
		$s.= $years."&nbsp;год&nbsp;";
	}
	elseif($years > 1) {
		$s.= $years."&nbsp;года&nbsp;";
	}
	if($months == 1) {
		$s.= $months."&nbsp;месяц&nbsp;";
	}
	elseif($months > 1) {
		$s.= $months."&nbsp;месяцев&nbsp;";
	}
	if($weeks == 1) {
		$s.= $weeks."&nbsp;неделя&nbsp;";
	}
	elseif($weeks > 1) {
		$s.= $weeks."&nbsp;недель&nbsp;";
	}
	if($days == 1) {
		$s.= $days."&nbsp;день&nbsp;";
	} else if($days > 1) {
		$s.= $days."&nbsp;дней&nbsp;";
	}
	if($hours == 1) {
		$s.= $hours."&nbsp;час&nbsp;";
	} else if($hours > 1) {
		$s.= $hours."&nbsp;часов&nbsp;";
	}
	if($minutes == 1) {
		$s.= $minutes."&nbsp;минута";
	} else if($minutes > 1) {
		$s.= $minutes."&nbsp;минут";
	}
	return $s;
}
Простенький пример - не является идеальным решением, но суть раскрывает.

Спасибо всем кто поддерживает мою тему!

Вот у меня вопрос касательно этой функции, timeleft( $begin,$end ) - какие две переменные должна получить функция? $dif = $end - $begin; и зачем их отнимать?

P.S Заранее благодарю вас за ответ!
 
Вы же писали:

чтоб на выходе получилось что то типа 2 года 3 месяца назад, или 7 дней назад, или же 23 дня назад :)

Количество времени назад - это время прошедшее с искомой даты до текущей отметки timestamp? Тогда передавайте в функцию:
$begin = искомая метка даты.
$end = текущее время.

Отнимаем для того, чтобы понять сколько времени прошло и потом уже это число обрабатываем как нам нужно и выводим в удобном формате.
 
хмм, а можно поинтерисоватся почему после переменной $s стоит точка?

$s.= $month просто обычно записываем $s = $month
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху