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
unddeleted_at
Spalten zu Instanzen vonCarbon
, die eine .__ bereitstellt. Auswahl hilfreicher Methoden und erweitert die native PHPDateTime
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.
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() ?>
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.
Für jede Version von Laravel
$message->updated_at->diffForHumans();
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';
}
Carbon :: parse ($ p-> created_at) -> diffForHumans ();