Такой вот вопрос. На одном из сайтов делал примерно такое:
<?php
$post_approved_date = '2015-08-23 02:46:19'; // дата создания поста, условно.
$tm = [
86400 => "<font color=\"#75FF00\">сутки назад</font>",
172800 => "<font color=\"#61B14D\">2 дня назад</font>",
259200 => "<font color=\"#FFA300\">более 3-х дней назад</font>",
432000 => "<font color=\"#FF7800\">больше 5-ти дней назад</font>",
604800 => "<font color=\"#FF0000\">более чем неделю назад</font>",
1209600 => "<b><font color=\"#FF0000\">более 2-х недель назад</font></b>",
1814400 => "<b><font color=\"#FF0000\">более 3-х недель назад</font></b>",
2419200 => "<b><font color=\"#FF0000\">более месяца назад</font></b>",
4838400 => "<b><font color=\"#FF0000\">более 2-х месяцев назад</font></b>",
7257600 => "<b><font color=\"#FF0000\">более 3-х месяцев назад</font></b>",
15778463 => "<b><font color=\"#FF0000\">более полугода назад</font></b>",
31556926 => "<b><font color=\"#FF0000\">более полугода назад</font></b>",
];
$timediff = time() - strtotime($post_approved_date); // вычислим промежуток времени от даты создания поста.
array_walk($tm, "getElapsedTime", $timediff); // удалим лишние элементы и вытащим последний из них.
$textElapsedTime = array_pop(array_filter($tm)); // Он и будет подходящим описанием.
print_r($textElapsedTime); // вывод того, что получилось.
/**
* Удаляет временные метки, которые больше промежутка времени от даты создания поста.
* @param: &$val (string) значение элементы массива временных меток. Текстовое пояснение прошедшего времени.
* @param: $key (int) ключ элемента массива временных меток. Временная метка.
* @param: $timediff (int) промежуток времени в секундах с момента создания поста.
*/
function getElapsedTime(&$val, $key, $timediff)
{
if ( $key > $timediff )
$val = null;
}
?>
Но чета кажется не фонтан.