@AlikDex

Как на тостере реализован вывод промежутка времени от даты создания поста?

Такой вот вопрос. На одном из сайтов делал примерно такое:
<?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;
}

?>

Но чета кажется не фонтан.
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
savostin
@savostin
Еще один программист
Лень разбираться как на тостере сделано.
Берите momentjs.com/docs/#/durations/humanize

Добавлено: почему JS, а не PHP? Потому, что время течет, имхо это должно быть на клиенте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы