2015-06-23 8 views
8

Chcę umieścić różnicę czasu między moją updated_at kolumnie (w bazie danych za pomocą znacznika czasu) i teraz. Chcę, żeby było przyjazne dla ludzi, tak: 53 min temu, 2 godziny temu, 3 dni temu, itd.Jak uzyskać różnicę czasu w czytelnej dla człowieka z Laravel 5

Czy istnieje jakaś funkcja, której mogłabym użyć, aby ułatwić?

Aby być pewnym, że mnie rozumiesz, załóżmy, że mam w mojej bazie danych kolumnę updated_at równą 2015-06-22 20:00:03. Teraz jest 20:00:28, więc na mojej stronie chciałbym zobaczyć: 25 minut temu. Kiedy jest dłuższy niż 59 minut, chcę pokazać tylko godziny, a kiedy jest dłuższy niż 24 godziny, chciałbym zobaczyć, ile dni temu.

+0

Spójrz na [to] (https://gist.github.com/ozh/8169202) (znalezione w google) –

+0

Spójrz na klasy DateTime i metoda diff [w instrukcji] (http : //php.net/manual/en/class.datetime.php) – RiggsFolly

+0

Możesz użyć [Carbon] (http://carbon.nesbot.com/), pochodzi z Laravel. –

Odpowiedz

29

Domyślnie, Eumquent konwertuje kolumny created_at i updated_at na instancje Carbon. Więc jeśli pobierasz dane za pomocą Eloquent, możesz to zrobić jak poniżej.

$object->updated_at->diffForHumans(); 

Jeśli chcesz dostosować pola, które zostaną zmutowane automatycznie, a następnie w ciągu danego modelu, można dostosować je jak chcesz.

// Carbon instance fields 
protected $dates = ['created_at', 'updated_at', 'deleted_at']; 
+1

Wow, właśnie tego szukałem. diffForHumans(); Thx Burak, pomógł mi DUŻA –

+0

Laravel zaskakuje mnie za każdym razem. – Farhad

+1

Dokładnie to, co chciałem. Dzięki – flangofas