webentwicklung-frage-antwort-db.com.de

Verwenden von Carbon, um eine vom Menschen lesbare Zeitdifferenz zurückzugeben

Ich verwende Laravel 4, um mein Projekt zu erstellen.

Ich baue gerade den Kommentarbereich auf und möchte anzeigen, wie lange der Beitrag erstellt wurde, etwa wie Facebooks '10 vor Minuten ' & ' vor 2 Wochen ' usw.

Ich habe ein wenig recherchiert und festgestellt, dass ein Paket mit dem Namen Carbon dies tun kann. 

Nach dem Lesen der Laravel-Dokumente heißt es:

Standardmäßig konvertiert Eloquent die Codes created_at, updated_at und deleted_at Spalten zu Instanzen von Carbon, die eine .__ bereitstellt. Auswahl hilfreicher Methoden und erweitert die native PHP DateTime Klasse.

Wenn ich jedoch eine Datumsspalte zurückschicke, die ich erstellt habe, wird sie nicht wie bei Facebook angezeigt.

Der Code, den ich verwende, lautet:

return array('time');

Hat irgendein Körper dieses Carbon-Paket verwendet, das mir helfen könnte, das zu tun, was ich brauche? Ich bin ziemlich verwirrt.

42
BigJobbies

Wenn Sie die Carbon-Dokumente lesen, um das zu erhalten, was Sie möchten, rufen Sie die diffForHumans()-Methode auf. 

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

Standardmäßig konvertiert Eloquent die Spalten created_at, updated_at und deleted_at in Instanzen von Carbon. Ihr Code sollte also so aussehen:

$comment->created_at->diffForHumans();

Es ist sehr cool Es wird eine Zeichenfolge wie 2 minutes ago oder 1 day ago erzeugt. Plurar oder Singular, Sekunden, Minuten, Stunden, Tage, Wochen oder Jahre, es läuft automatisch. Ich habe es auf Laravel Version 4.1.24 getestet.

108
Ifan Iqbal

Für jede Version von Laravel

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

verwenden Sie diesen Code vor einiger Zeit:

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';

}

2
fdyahk

Carbon :: parse ($ p-> created_at) -> diffForHumans ();

0
Hari Pudyal