0
J’ai bien aimé cette fonction trouvé sur Dev Zone, mais il manquait quelques trucs pour qu’elle satisfasse tous mes besoins.
– Pluriel de « Month »… oui je sais je chipote
– Deuxième modification : retour en remplaçant des arguments d’une chaine utilisable par sprintf
– Troisième modification (à venir) : internationalisation pour le framework Kohana.
/** * Affiche une date relative sous la forme il y a x jours/heures/minutes/secondes * D'après une fonction postée sur le site Dev Zone * * @param string $iTime timestamp à convertir * @param string $expression argument format d'une chaine utilisable par sprintf * @return void * @see https://www.devzone.fr/snippet-php-afficher-une-date-relative */ public static function relative_time($iTime, $expression) { $iTimeDifference = time() - $iTime ; if( $iTimeDifference<0 ) { return; } $iSeconds = $iTimeDifference ; $iMinutes = round( $iTimeDifference/60 ); $iHours = round( $iTimeDifference/3600 ); $iDays = round( $iTimeDifference/86400 ); $iWeeks = round( $iTimeDifference/604800 ); $iMonths = round( $iTimeDifference/2419200 ); $iYears = round( $iTimeDifference/29030400 ); if( $iSeconds<60 ) return "less than a minute"; elseif( $iMinutes<60 ) return sprintf($expression, $iMinutes . ' minute' . ( $iMinutes>1 ? 's' : '' )); elseif( $iHours<24 ) return sprintf($expression, $iHours . ' hour' . ( $iHours>1 ? 's' : '' )); elseif( $iDays<7 ) return sprintf($expression, $iDays . ' day' . ( $iDays>1 ? 's' : '' )); elseif( $iWeeks <4 ) return sprintf($expression, $iWeeks . ' week' . ( $iWeeks>1 ? 's' : '' )); elseif( $iMonths<12 ) return sprintf($expression, $iMonths . ' month' . ( $iMonths>1 ? 's' : '' )); else return sprintf($expression, $iYears . ' year' . ( $iYears>1 ? 's' : '' )); }
Et pour WordPress…
Utiliser directement human_time_diff
https://codex.wordpress.org/Function_Reference/human_time_diff
DATE 06 Nov 2011