Здравствуйте друзья, буквально недавно мне для работы нужна была функция, которая бы позволила мне вывести новость или сообщение, а после вывести фразу «х дней назад», если речь о часах, к примеру сообщение выставлено буквально недавно то сообщение будет звучать «10 часов назад».
В общем как обычно была нужда сделать такую функцию и естественно я ее сделал, но думаю многим эта функция будет полезна, к тому же этот пост я делаю возможно даже больше для себя — чтобы потом сильно долго не искать.
Кстати, решил сделать еще дополнительную страничку, где вы можете протестировать функцию для того чтобы наглядно увидеть как она работает.
В остальном функция выглядит следующим образом:
function timeago($date) { $timestamp = strtotime($date); $strTime = array("секунд", "минут", "часов", "дней", "месяцев", "лет"); $length = array("60","60","24","30","12","10"); $currentTime = time(); if($currentTime >= $timestamp) { $diff = time()- $timestamp; for($i = 0; $diff >= $length[$i] && $i < count($length)-1; $i++) { $diff = $diff / $length[$i]; } $diff = round($diff); return $diff . " " . $strTime[$i] . " назад"; } } // Применение: if(!empty($_POST["date-field"])) { $strTimeAgo = timeago($_POST["date-field"]); // 2020-05-20 echo "<div class='date-result'>Результат: " . $strTimeAgo."</div>"; }
Единственное чего еще не хватает к данной функции это склонение слов для того, чтобы при получении значения в годах, выводилось «1 год назад», «5 лет назад» и так дальше.
Прилагаю сам php файлик для скачивания, чтобы если что можно было скачать.
Пользуйтесь на здоровье
Метки: php, работа со строками, урок программирования, функции