Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Zeitstempel in PHP in „Time Ago'-Strings konvertieren?

Wie kann ich Zeitstempel in PHP in „Time Ago'-Strings konvertieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 07:58:22270Durchsuche

How Can I Convert Timestamps to

Konvertieren von Zeitstempeln in Zeitzeichenfolgen in PHP

Das Konvertieren von Zeitstempeln in relative Zeitzeichenfolgen kann nützlich sein, um Informationen in einem benutzerfreundlicheren Format anzuzeigen. In PHP gibt es mehrere Funktionen und Ansätze, mit denen Sie dies erreichen können.

Ein beliebter Ansatz besteht darin, die Funktion strtotime() zu verwenden, um eine Zeichenfolgendarstellung eines Zeitstempels in sein Unix-Zeitstempelformat (die Anzahl der Sekunden) zu konvertieren seit der Unix-Epoche, 1. Januar 1970 00:00:00 UTC). Sie können dann Funktionen wie gmdate() oder date() verwenden, um den Unix-Zeitstempel zu formatieren, was von Vorteil sein kann, wenn Ihr Zeitstempel in einem unkonventionellen Format vorliegt.

Alternativ können Sie die Klasse DateTime() zum Konvertieren verwenden einen Zeitstempel oder eine Datumszeichenfolge in ein PHP-DateTime-Objekt. Die DateTime-Klasse bietet verschiedene Methoden zum Bearbeiten und Formatieren von Datums- und Uhrzeitangaben. Durch den Vergleich des DateTime-Objekts, das den Zeitstempel darstellt, mit der aktuellen Zeit können Sie die verstrichene Zeit berechnen und eine relative Zeitzeichenfolge erstellen.

Hier ist eine Beispielfunktion, die die DateTime-Klasse verwendet, um einen Zeitstempel in eine Zeitzeichenfolge umzuwandeln :

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 verwendet einen Zeitstempel oder eine Datumszeichenfolge als Argument und gibt eine relative Zeitzeichenfolge zurück. Indem Sie das Argument „$full“ auf „true“ setzen, können Sie eine detailliertere Zeichenfolge erhalten, die alle relevanten Zeiteinheiten enthält. Andernfalls wird nur die größte relevante Zeiteinheit einbezogen.

Beispielverwendung:

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

Ausgabe:

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

Diese Funktion bietet eine einfache und anpassbare Möglichkeit dazu Konvertieren Sie Zeitstempel in relative Zeitzeichenfolgen in PHP. Sie können damit Ihren Benutzern zeitkritische Informationen klar und prägnant anzeigen.

Das obige ist der detaillierte Inhalt vonWie kann ich Zeitstempel in PHP in „Time Ago'-Strings konvertieren?. 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