Heim >Backend-Entwicklung >PHP-Tutorial >Wie konvertiere ich einen Zeitstempel in PHP in „Zeit zurück'?

Wie konvertiere ich einen Zeitstempel in PHP in „Zeit zurück'?

Susan Sarandon
Susan SarandonOriginal
2024-12-24 12:57:11788Durchsuche

How to Convert a Timestamp to

Konvertieren Sie den Zeitstempel in PHP in die Zeit davor: Eine umfassende Anleitung

Um einen Zeitstempel in ein für Menschen lesbares Format wie „3 Minuten“ zu konvertieren ago“ in PHP können wir die praktische Funktion time_elapsed_string() verwenden. Lassen Sie uns seine Verwendung untersuchen und uns mit seiner Implementierung befassen.

Funktionsverwendung:

Die Funktion time_elapsed_string() verwendet als erstes Argument eine Datums-/Uhrzeitzeichenfolge, die den gewünschten Zeitstempel darstellt konvertieren. Optional können Sie true als zweites Argument angeben, um die gesamte verstrichene Zeit in Jahren, Monaten, Wochen, Tagen, Stunden, Minuten und Sekunden anzuzeigen.

Zum Beispiel:

echo time_elapsed_string('2013-05-01 00:22:35');
echo time_elapsed_string('@1367367755'); # timestamp input
echo time_elapsed_string('2013-05-01 00:22:35', true);

Funktionsausgabe:

Die Funktion gibt eine Zeichenfolge zurück, die die verstrichene Zeit in einer benutzerfreundlichen Form darstellt Format:

4 months ago
4 months ago
4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago

Implementierung:

Untersuchen wir die Implementierung der Funktion time_elapsed_string():

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

Diese Funktion erstellt zunächst Instanzen von DateTime für die aktuelle Zeit ($now) und den bereitgestellten Zeitstempel ($ago). Anschließend berechnet es die Differenz zwischen den beiden mithilfe der diff()-Methode, die ein DateInterval-Objekt zurückgibt, das die verstrichene Zeit in verschiedenen Einheiten enthält.

Die Funktion ändert die Tageskomponente des $diff-Objekts, um Wochen und Wochen zu berücksichtigen Entfernt Nullwertkomponenten aus dem $string-Array. Wenn der Parameter $full wahr ist, wird das gesamte Array für die Ausgabe verwendet; andernfalls wird nur die erste Komponente ausgewählt.

Abschließend wandelt die Funktion das $string-Array in einen für Menschen lesbaren String um, indem sie die Komponenten mit Kommas verbindet und „ago“ anhängt. Wenn die verstrichene Zeit weniger als eine Minute beträgt, wird „gerade jetzt“ zurückgegeben.

Wenn Sie die Implementierung dieser praktischen Funktion verstehen, können Sie Zeitstempel in Ihren PHP-Anwendungen effektiv in Zeitzeichenfolgen umwandeln und so die Arbeit vereinfachen Benutzer können Datumsinformationen verstehen.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen Zeitstempel in PHP in „Zeit zurück'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn