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
