2014-04-28 5 views
18

Jak wyświetlać różnice tylko przez dni. Tutaj $price->created_at = 2014-04-28Laravel (Carbon) wyświetla różnicę dat tylko w dniach

\Carbon\Carbon::createFromTimeStamp(strtotime($price->created_at))->diffForHumans() 

Dzięki!

+0

Czego się dokładnie spodziewasz i na czym polega różnica? –

+0

na przykład "2 dni temu". Ale jeśli właśnie stworzyłem nowy zasób, wiadomość brzmi - "1 godzina temu" (ale potrzebuję "dzisiaj"). – user2573863

+0

jeśli dodasz wiersz "" Węglowy "=>" Węglowy \ węgiel "," na dole tablicy "aliasy" w app/config/app.php spowoduje to, że biblioteka węgla będzie dostępna wszędzie w laravel i będziesz tylko trzeba użyć kodu "carbon ::", aby utworzyć obiekt węglowy –

Odpowiedz

39

Załóżmy, że chcemy teraz różnicę() i wynikają z diffForHumans Ci odpowiada chyba na dzisiaj:

$created = new Carbon($price->created_at); 
$now = Carbon::now(); 
$difference = ($created->diff($now)->days < 1) 
    ? 'today' 
    : $created->diffForHumans($now); 

EDIT: nie trzeba zadzwonić Carbon :: teraz() dwa razy więc teraz zamiast używać $.

+0

created_at jest już instancją Carbon z najnowszymi wersjami Laravel. – srph

+0

@KierBorromeo Masz rację co do domyślnego zachowania wymownych znaczników czasu, ale przeczytaj ponownie pytanie. OP wydaje się nie używać go, więc tak nie jest. –

+0

Tak, ale po prostu sugerowałem refaktor, aby skrócić i wyczyścić kod. – srph

12

Funkcja diffInDays może pomóc.

$cDate = Carbon::parse($date); 
return $cDate->diffInDays(); 
+0

Zauważ, że diffInDays() nie bierze pod uwagę YEAR. Na przykład 2015-01-01 i 2016-01-02 mają tylko 1 dzień różnicy. – gye

+3

@gye Zgaduję, że to nie jest prawda .. –

+2

@abdullahkahraman Masz rację. Przepraszam za zamieszanie. Podczas przeprowadzania testów niektóre inne problemy wpływały na moje wyniki. Dzięki za wskazanie tego. – gye

Powiązane problemy