
Si vous fréquentez comme moi des réseaux sociaux (facebook, twitter....), vous avez dû remarquer que lorsque vous postez, il y a souvent marqué "posté, il y a 30 secondes"..... Mais comment faire pour le reproduire sur son propre site? La réponse est simple, il s'agit de faire des calculs en php à partir d'un horaire. Pour des raisons utilisations, nous allons dire que l'heure du post est en seconde. En php, il existe une fonction time() qui indique l'horaire en seconde à partir du 1er janvier 1970. Je vais vous montrer et vous apprendre comment nous pouvons reproduire cette fonctionnalité.
Petit cours de math, j'ai précédemment indiqué que nous possédions une date en seconde. Nous savons tous que dans 1 minute, il y a 60 secondes. Jusque là, je pense que je n'ai perdu personne. Bon passons à plus dur. Dans 1 heure, il y a combien de seconde? Ah, là, c'est pas aussi simple. 1 heure = 60 minutes et comme 1 minute est égale à 60 secondes, on obtiendra donc:
1h= 60 minutes=60*60= 3600 secondes. Et ainsi de suite......
La question qui se pose maintenant est, comment, à partir de la date du post, savoir combien de temps il s'est écoulé. La réponse est très simple, il faut faire une comparaison entre la date actuelle et la date antérieure. En gros, pour savoir le temps écoulé, nous devons faire une soustraction, date actuelle - date ancienne, on aura ainsi une durée en seconde. Pour la suite, je vous donne ma fonction qui a été codé en 4ème vitesse mais qui peut, je pense, énormément être optimisée.
<?php function relative($time) { $seconde=$minute=$heure=$jour=$semaine=$mois=$annee=''; $seconde = time() - $time ; //calcul du nombre de seconde if($seconde<60) { $text=$seconde.' seconde'; } else { $minute=floor( $seconde/60 ); $seconde=$seconde-($minute*60); $text=$seconde.' seconde'; } //calcul du nombre de minute if($minute==0) { $text=' '.$text; } elseif($minute>60) { $heure=floor($minute/60 ); $minute=$minute-($heure*60); $text=$minute.' minute '.$text; } else { $text=$minute.' minute '.$text; } //calcul du nombre de heure if($heure==0) { $text=' '.$text; } elseif($heure>24) { $jour=floor($heure/24 ); $heure=$heure-($jour*24); $text=$heure.' heure '.$text; } else { $text=$heure.' heure '.$text; } //calcul du nombre de jour if($jour==0) { $text=' '.$text; } elseif($jour > 7) { $semaine=floor($jour/7 ); $jour=$jour-($semaine*7); $text=$jour.' jour '.$text; } else { $text=$jour.' jour '.$text; } //calcul du nombre de semaine if($semaine==0) { $text=' '.$text; } elseif($semaine > 4) { $mois=floor($semaine/4 ); $semaine=$semaine-($mois*4); $text=$semaine.' semaine '.$text; } else { $text=$semaine.' semaine '.$text; } //calcul du nombre de mois if($mois==0) { $text=' '.$text; } elseif($mois > 12) { $annee=floor($mois/12 ); $mois=$mois-($annee*12); $text=$mois.' mois '.$text; } else { $text=$mois.' mois '.$text; } //calcul du nombre de annee if($annee==0) { $text=' '.$text; } else { $text=$annee.' ans '.$text; } return $text; } //lancement de la fonction echo relative($dateenseconde); ?>
Voila, cette fonction est assez commentée pour la comprendre. N'hésitez pas à poster en commentaire si vous avez des difficultés.
Personnellement, elle était pour montrer comment cela fonctionnait sur facebook ou autre.
Personnellement, je ne l'utilise pas car je la trouve inutile.
Note :