Рубрики1
Социалки
Новые статьи

Оригинал сообщения

Сегодня поговорим об относительной дате на PHP, как сделать преобразование даты создания файла, даты записи в БД или какой-либо другой даты в дату, относительную дату сегодняшней.

То есть, например, у тебя есть файл, созданный 4-го ноября 2011 года, а сегодня уже 5-тое ноября 2011 года. Получается, что файл создан вчера.

Точно также для других дней могут быть даты типа:

  • вчера
  • завтра
  • через Н-дней
  • Н дней назад

 
Сама по себе функция не делает ничего сложного, кроме как переводит дату в секунды и проверяет сколько чего прошло (дней, недель и т.п.).

При желании можно дополнить функцию своими проверками.

 //Relative Date Function

function relative_date($time) {

$today = strtotime(date(‘M j, Y’));

$reldays = ($time — $today)/86400;

if ($reldays >= 0 && $reldays < 1) {

return ‘Сегодня’;

} else if ($reldays >= 1 && $reldays < 2) {

return ‘Завтра’;

} else if ($reldays >= –1 && $reldays < 0) {

return ‘Вчера’;

}

if (abs($reldays) < 7) {

if ($reldays > 0) {

$reldays = floor($reldays);

return ‘через  ’ . $reldays . ’ дня’ . ($reldays != 1 ? ‘s’ : ”);

} else {

$reldays = abs(floor($reldays));

return $reldays . ’ день’ . ($reldays != 1 ? ‘s’ : ”) . ’ назад’;

}

}

if (abs($reldays) < 182) {

return date(‘l, j F’,$time ? $time : time());

} else {

return date(‘l, j F, Y’,$time ? $time : time());

}

} 

Использование:

 $my_timestamp = "2007-12-15 11:22:47";

//store the results of the function into $my_relative_time

$my_relative_time = function relative_date(strtotime($my_timestamp ));

//output

echo $my_relative_time ; 

LIci WP