banniere
Ecrit par leknoppix le 18-04-2010 à 19:12:45
Utiliser des dates en php c'est tres simple

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.

 

Publier sur mon compte twitterPublier sur mon viadeoPublier sur mon deliciousPublier sur mon compte twitter

Ajoute ton commentaire

Pseudo : *
E-Mail : *
MSN :
Site internet :
Blog :
Note : *
Commentaire : *
Ne pas compléter :

Le 7-03-2011 à 13:05:07 par Jquery

avatarIl y a surtout des petit plugin jquery dans le style de celui-ci : http://bassistance.de/jquery-plugins/jquery-plugin-prettydate/ qui eux vont économiser les ressources du serveur, ce qui me parait plus intéressant comme approche.

Note :  notenotenote
Le 11-07-2010 à 16:32:15 par leknoppix

avatarPersonnellement, elle était pour montrer comment cela fonctionnait sur facebook ou autre. Personnellement, je ne l'utilise pas car je la trouve inutile.

Note :  notenotenotenotenote
Le 11-07-2010 à 16:24:26 par SpaceFox

avatarC'est quand même dramatique PHP, quand tu es obligé de coder ce genre de fonctions à la main...

Note :  notenotenotenotenote
© 2007-2017