Twitter a lancé cette mode : Afficher une date sous la forme relative suivante : »il y a 6 heures ».
Voici comment réaliser ceci en PHP.
Cette petite fonction sans grande prétention va vous renvoyer l’écart qu’il y a avec un timestamp passé en paramètre.
[php]
/**
* Affiche une date relative sous la forme il y a x jours/heures/minutes/secondes
*
* @name relative_time
* @param int $iTime : timestamp à convertir
* @return string
**/
function relative_time( $iTime )
{
$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 "Il y a moins d’une minute";
elseif( $iMinutes<60 )
return ‘Il y a ‘ . $iMinutes . ‘ minute’ . ( $iMinutes>1 ? ‘s’ : » );
elseif( $iHours<24 )
return ‘Il y a ‘ . $iHours . ‘ heure’ . ( $iHours>1 ? ‘s’ : » );
elseif( $iDays<7 )
return ‘Il y a ‘ . $iDays . ‘ jour’ . ( $iDays>1 ? ‘s’ : » );
elseif( $iWeeks <4 )
return ‘Il y a ‘ . $iWeeks . ‘ semaine’ . ( $iWeeks>1 ? ‘s’ : » );
elseif( $iMonths<12 )
return ‘Il y a ‘ . $iMonths . ‘ mois’;
else
return ‘Il y a ‘ . $iYears . ‘ an’ . ( $iYears>1 ? ‘s’ : » );
}
echo relative_time( 1266915215 );
[/php]
Pour obtenir les infos concernant la date, tu peux utiliser : http://fr2.php.net/manual/fr/function.getdate.php ; c’est une fonction native de php donc surement moins gourmande (je suis peut etre un peu extrême la
) Par contre il manquera le jour de la semaine, mais il suffit de le rajouter au tableau
Effectivement getdate() peut être pratique.
Il n’y a pas une et une seule manière de faire : je viens de retrouver dans mes bookmarks cet article utilisant strtotime() :
Dates relatives en PHP