Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich aus Unix-Zeitstempeln in PHP für Menschen lesbare relative Datums- und Uhrzeitangaben generieren?

Wie kann ich aus Unix-Zeitstempeln in PHP für Menschen lesbare relative Datums- und Uhrzeitangaben generieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-03 12:59:10377Durchsuche

How Can I Generate Human-Readable Relative Dates and Times from Unix Timestamps in PHP?

PHP: Relatives Datum/Uhrzeit aus Zeitstempeln generieren

In PHP ist die Konvertierung von Unix-Zeitstempeln in für Menschen lesbare relative Datums-/Uhrzeitzeichenfolgen eine häufige Aufgabe. Allerdings kann es eine Herausforderung sein, ein flexibles Skript zu erstellen, um sowohl vergangene als auch zukünftige Konvertierungen zu verarbeiten.

Die folgende Funktion, time2str, erfüllt diesen Bedarf, indem sie Zeitstempel in relative Datums-/Uhrzeitzeichenfolgen wie „vor 2 Wochen“ oder „nachher“ konvertiert 10 Minuten und 15 Sekunden.“

function time2str($ts)
{
    // Convert string timestamp to integer
    if (!ctype_digit($ts)) {
        $ts = strtotime($ts);
    }

    $diff = time() - $ts;

    // Handle present, past, and future conversions
    if ($diff == 0) {
        return 'now';
    } elseif ($diff > 0) {
        // Past: "X days/weeks/months ago"
        $day_diff = floor($diff / 86400);
        switch ($day_diff) {
            case 0:
                return relativeMinutes($diff);
            case 1:
                return 'Yesterday';
            case $day_diff < 7:
                return "$day_diff days ago";
            case $day_diff < 31:
                return ceil($day_diff / 7) . ' weeks ago';
            case $day_diff < 60:
                return 'last month';
            default:
                return date('F Y', $ts);
        }
    } else {
        // Future: "after X days/weeks/months"
        $diff = abs($diff);
        $day_diff = floor($diff / 86400);
        switch ($day_diff) {
            case 0:
                return relativeMinutes($diff, true);
            case 1:
                return 'Tomorrow';
            case $day_diff < 4:
                return date('l', $ts);
            case $day_diff < 7 + (7 - date('w')) :
                return 'next week';
            case ceil($day_diff / 7) < 4:
                return 'in ' . ceil($day_diff / 7) . ' weeks';
            case date('n', $ts) == date('n') + 1:
                return 'next month';
            default:
                return date('F Y', $ts);
        }
    }
}

// Helper to generate relative minute/second strings
function relativeMinutes($diff, $future = false)
{
    if ($diff < 60) {
        return 'just now';
    } else if ($diff < 120) {
        return '1 minute' . (($future) ? ' ago' : '');
    } else {
        return floor($diff / 60) . ' minutes' . (($future) ? ' ago' : '');
    }
}

Diese Funktion behandelt Randfälle wie „gerade jetzt“ und „in 1 Minute“. Es bietet außerdem unterschiedliche relative Zeichenfolgen für vergangene und zukünftige Daten, wodurch es flexibel für die Verwendung in verschiedenen Anwendungen geeignet ist.

Das obige ist der detaillierte Inhalt vonWie kann ich aus Unix-Zeitstempeln in PHP für Menschen lesbare relative Datums- und Uhrzeitangaben generieren?. 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