2014-04-28 20 views
18

Come visualizzare la diffrenza solo per giorni. Qui $price->created_at = 2014-04-28Laravel (Carbon) visualizzare la differenza di data solo in giorni

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

Grazie!

+0

Che cosa ti aspetti esattamente e quale differenza? –

+0

per esempio "2 giorni fa". Ma se ho appena creato una nuova risorsa, il messaggio è - '1 ora fa' (ma ho bisogno di 'oggi'). – user2573863

+0

se aggiungi la linea "'Carbon' => 'Carbon \ Carbon'," alla fine dell'array 'aliases' in app/config/app.php questo renderà la libreria di carbone disponibile ovunque in laravel e avrai solo è necessario utilizzare il codice "carbonio ::" per creare un oggetto carbonio –

risposta

39

si supponga di voler differenza per ora() e il risultato da diffForHumans vi si addice ad eccezione di oggi:

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

edit: non c'è bisogno di chiamare Carbon :: ora() due volte in modo da utilizzare $ ora invece.

+0

created_at è già un'istanza di Carbon con le ultime versioni di Laravel. – srph

+0

@KierBorromeo Hai ragione sul comportamento predefinito dei timestamp Eloquent, ma leggi di nuovo la domanda. OP non sembra usarlo, quindi non è il caso qui. –

+0

Sì, ma stavo semplicemente suggerendo un refactor per abbreviare e pulire il codice. – srph

12

La funzione diffInDays potrebbe essere d'aiuto.

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

Nota che diffInDays() non prenderà in considerazione YEAR. Ad esempio, 2015-01-01 e 2016-01-02 hanno solo 1 giorno di differenza. – gye

+3

@gye Immagino che non sia vero .. –

+2

@abdullahkahraman Hai ragione. Dispiace per la confusione. Mentre stavo facendo i test, alcuni altri problemi stavano influenzando i miei risultati. Grazie per averlo indicato. – gye

Problemi correlati