it-swarm.com.ru

Использование Carbon для возврата разницы между датой и человеком

Я использую Laravel 4 для создания своего проекта.

В настоящее время я создаю раздел комментариев и хочу показать, как давно был создан пост, вроде как в Facebook '10 минут назад' & '2 недели назад' и т. д.

Я провел небольшое исследование и обнаружил, что пакет под названием Carbon может сделать это.

После прочтения документа Laravel, он говорит:

По умолчанию Eloquent преобразует created_at, updated_at, а также deleted_at столбцы для экземпляров Carbon, который предоставляет набор полезных методов и расширяет собственный класс PHP DateTime.

Но когда я возвращаю созданный мной столбец даты, он не отображается так, как на Facebook.

Код, который я использую:

return array('time');

Кто-нибудь использовал эту карбоновую упаковку, которая могла бы помочь мне сделать то, что мне нужно, я совершенно сбит с толку.

45
BigJobbies

Если вы читаете документы Carbon, чтобы получить то, что вам нужно, вы вызываете метод diffForHumans().

<?php echo \Carbon\Carbon::createFromTimeStamp(strtotime($comment->created_at))->diffForHumans() ?>
80
Altrim

По умолчанию Eloquent преобразует столбцы созданный, обновленный и удаленный в экземпляры углерода. Итак, ваш код должен быть таким:

$comment->created_at->diffForHumans();

Это очень круто. Это будет производить строку как 2 minutes ago или 1 day ago. Plurar или единственное число, секунды, минуты, часы, дни, недели или годы, оно запускается автоматически. Я проверил это на Laravel версия 4.1.24.

114
Ifan Iqbal

Для любой версии Laravel

$message->updated_at->diffForHumans();
5
Rahul Hirve

используйте этот код для времени назад:

public function time_elapsed_string($datetime, $full = false) {
$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);

$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;

$string = array(
     'y' => 'year',
     'm' => 'month',
     'w' => 'week',
     'd' => 'day',
     'h' => 'hour',
     'i' => 'minute',
     's' => 'second',
 );
 foreach ($string as $k => &$v) {
     if ($diff->$k) {
         $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
     } else {
         unset($string[$k]);
     }
 }

 if (!$full) $string = array_slice($string, 0, 1);
 return $string ? implode(', ', $string) . ' ago' : 'just now';

}

3
fdyahk

Углерод :: синтаксического анализа ($ p-> created_at) -> diffForHumans ();

0
Hari Pudyal