Comme CuteTime, la fonction de Jay permet de retourner une date relative, comme sur Twitter. Avec la fonction de Jay Salvat, il est possible de passer plusieurs formats de dates, à la différence du plugin CuteTime ou il n’accepte que des dates formatées de la façon suivante : 2010/04/12 13:15:30. Ici on peut fournir une date du style 12 avril 2010 13:15 grâce à la fonction PHP strtotime qui permet de transformer une chaîne en timestamp.
Bon trêve de blabla, voici la fonction que propose Jay pour parvenir un résultat similaire à CuteTime, mais cette fois côté serveur:
<?php
/**
* Fonction getRelativeTime
* par Jay Salvat - http://blog.jaysalvat.com/
*/
function getRelativeTime($date) {
// Déduction de la date donnée à la date actuelle
$time = time() - strtotime($date);
// Calcule si le temps est passé ou à venir
if ($time > 0) {
$when = "il y a";
} else if ($time < 0) {
$when = "dans environ";
} else {
return "il y a moins d'une seconde";
}
$time = abs($time);
// Tableau des unités et de leurs valeurs en secondes
$times = array( 31104000 => 'an{s}', // 12 * 30 * 24 * 60 * 60 secondes
2592000 => 'mois', // 30 * 24 * 60 * 60 secondes
86400 => 'jour{s}', // 24 * 60 * 60 secondes
3600 => 'heure{s}', // 60 * 60 secondes
60 => 'minute{s}', // 60 secondes
1 => 'seconde{s}'); // 1 seconde
foreach ($times as $seconds => $unit) {
// Calcule le delta entre le temps et l'unité donnée
$delta = round($time / $seconds);
// Si le delta est supérieur à 1
if ($delta >= 1) {
// L'unité est au singulier ou au pluriel ?
if ($delta == 1) {
$unit = str_replace('{s}', '', $unit);
} else {
$unit = str_replace('{s}', 's', $unit);
}
// Retourne la chaine adéquate
return $when." ".$delta." ".$unit;
}
}
}
?>Pour l’utiliser, il suffit ensuite d’en faire l’appel comme ça :
<?php echo getRelativeTime ('2010-03-01 13:25:00'); ?>Si vous utiliser un gestionnaire de contenu comme WordPress, vous pouvez aussi inclure cette fonction dans le fichier function.php de votre thème, vous pourrez donc l’utiliser dans votre thème WordPress.

Laisser un commentaire