Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich relative Datums-/Uhrzeitzeichenfolgen aus Unix-Zeitstempeln in PHP generieren?

Wie kann ich relative Datums-/Uhrzeitzeichenfolgen aus Unix-Zeitstempeln in PHP generieren?

DDD
DDDOriginal
2024-11-26 21:55:10692Durchsuche

How Can I Generate Relative Date/Time Strings from Unix Timestamps in PHP?

Erzeugen eines relativen Datums/einer relativen Uhrzeit aus Zeitstempeln in PHP

Einführung

Bestimmen des relativen Datums /time basierend auf einem Zeitstempel ist eine häufige Aufgabe in der Programmierung. Diese Funktionalität wird komplexer, wenn unterschiedliche Zeitintervalle und die Richtung der Konvertierung (Vergangenheit oder Zukunft) berücksichtigt werden.

Antwort

Die folgende Funktion bietet einen umfassenden Ansatz zur Konvertierung Unix-Zeitstempel (erhalten mit der Funktion time()) in relative Datums-/Uhrzeitformate, die sowohl Vergangenheit als auch Zukunft berücksichtigen. Es generiert Ausgaben wie:


  • vor 2 Wochen

  • vor 1 Stunde und 60 Minuten

  • 15 Minuten und 54 Sekunden vor

  • nach 10 Minuten und 15 Sekunden

Die Funktion verwendet eine Reihe von bedingten Anweisungen, um die geeignete Zeitdarstellung zu bestimmen basierend auf der Differenz zwischen der aktuellen Zeit und der Zeitstempel:

<br>function time2str($ts)<br>{</p>
<pre class="brush:php;toolbar:false">// Handle syntax variations
if(!ctype_digit($ts)) $ts = strtotime($ts);

// Calculate the difference between now and the timestamp
$diff = time() - $ts;

// Check for exact matches to simplify handling
if($diff == 0) return 'now';

// Handle past timestamps
if($diff > 0)
{
    // Calculate day difference
    $day_diff = floor($diff / 86400);

    // Format past time intervals
    switch(true)
    {
        case ($day_diff == 0):    return constructPastInterval($diff); // Hours, minutes, seconds
        case ($day_diff == 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);
    }
}
// Handle future timestamps
else
{
    // Calculate absolute difference
    $diff = abs($diff);
    
    // Calculate day difference and format future time intervals based on logic similar to the past case.
}

}

Die Die Funktion constructionPastInterval() wird in dieser Antwort nicht angezeigt, übernimmt aber die Formatierung vergangener Intervalle (Stunden, Minuten, Sekunden).

Diese Funktion bietet eine robuste und vielseitige Lösung zum Generieren relativer Datums-/Uhrzeitdarstellungen aus Zeitstempeln, wodurch die Notwendigkeit mehrerer Skripte oder komplexer benutzerdefinierter Codierung entfällt.

Das obige ist der detaillierte Inhalt vonWie kann ich relative Datums-/Uhrzeitzeichenfolgen aus Unix-Zeitstempeln in PHP 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