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!