Voici une fonction qui vous permettra de convertir une date à sa valeur relative : "il y a 22 minutes", "dans 3 ans", ...
1 //+ Maigret Aurélien 2 //@ https://www.dewep.net 3 function getRelativeTime($date) 4 { 5 $date_a_comparer = new DateTime($date); 6 $date_actuelle = new DateTime("now"); 7 8 $intervalle = $date_a_comparer->diff($date_actuelle); 9 10 if ($date_a_comparer > $date_actuelle) 11 { 12 $prefixe = 'dans '; 13 } 14 else 15 { 16 $prefixe = 'il y a '; 17 } 18 19 $ans = $intervalle->format('%y'); 20 $mois = $intervalle->format('%m'); 21 $jours = $intervalle->format('%d'); 22 $heures = $intervalle->format('%h'); 23 $minutes = $intervalle->format('%i'); 24 $secondes = $intervalle->format('%s'); 25 26 if ($ans != 0) 27 { 28 $relative_date = $prefixe . $ans . ' an' . (($ans > 1) ? 's' : ''); 29 if ($mois >= 6) $relative_date .= ' et demi'; 30 } 31 elseif ($mois != 0) 32 { 33 $relative_date = $prefixe . $mois . ' mois'; 34 if ($jours >= 15) $relative_date .= ' et demi'; 35 } 36 elseif ($jours != 0) 37 { 38 $relative_date = $prefixe . $jours . ' jour' . (($jours > 1) ? 's' : ''); 39 } 40 elseif ($heures != 0) 41 { 42 $relative_date = $prefixe . $heures . ' heure' . (($heures > 1) ? 's' : ''); 43 } 44 elseif ($minutes != 0) 45 { 46 $relative_date = $prefixe . $minutes . ' minute' . (($minutes > 1) ? 's' : ''); 47 } 48 else 49 { 50 $relative_date = $prefixe . ' quelques secondes'; 51 } 52 53 return $relative_date; 54 }
La fonction doit prendre en paramètre une date supportée par la fonction DateTime : http://www.php.net/manual/fr/datetime.formats.php.
Si vous souhaitez faire passer un timestamp à la fonction, alors rajouter un @
devant.
1 echo getRelativeTime("@1325372400");