En PHP, la conversion d'horodatages Unix en chaînes de date/heure relatives lisibles par l'homme est une tâche courante. Cependant, créer un script flexible pour gérer les conversions passées et futures peut s'avérer difficile.
La fonction suivante, time2str, répond à ce besoin en convertissant les horodatages en chaînes de date/heure relatives telles que "il y a 2 semaines" ou "après". 10 minutes et 15 secondes."
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' : ''); } }
Cette fonction gère les cas extrêmes tels que "tout à l'heure" et "dans 1 minute". Il fournit également différentes chaînes relatives pour les dates passées et futures, ce qui le rend flexible pour une utilisation dans diverses applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!