21
juil
2

PHP: Calculez la différence entre deux temps

Calculez la différence entre deux temps différents

Si vous travaillez a l’heure, vous aurez surement besoin de ce tout petit script. En effet, il permet de calculer la différence entre 2 heures.

Alors, qu’attendez-vous?


Demonstration
Télécharger


Le CSS

#full {
	padding:15px;
	background: #000;
	border: #666 solid 2px;
	margin:30px auto auto auto;
	color:#FFF;
	width:400px;
	text-align:center;
}
.ok, .error {

	font-size:18px;
	padding:10px;
	margin-bottom:20px;
}
.ok {
	background:#0C0;
	border:#060 solid 1px;
}
.error {
	background: #de0404;
	border:#F00;
}

Dans notre cas, le CSS est trés basique vu qu’il sert juste a aligner la « boite » (div) du formulaire en centre et pour que les deux message (erreur et succés) soient mieux compréhensible.

Le PHP

<?php $hdeb=''; $hfin=''; if (isset($_GET['deb']) && $_GET['deb']!="" && count(explode(":",$_GET['deb']))==3) { $hdeb=$_GET['deb']; $hfin=$_GET['fin']; function difheure($heuredeb,$heurefin) // J'ai trouvé cette fonction sur cette page: http://www.asp-php.net/ressources/bouts_de_code.aspx?id=799 // Merci à DB77 pour cette fonction. { $hd=explode(":",$heuredeb); $hf=explode(":",$heurefin); $hd[0]=(int)($hd[0]);$hd[1]=(int)($hd[1]);$hd[2]=(int)($hd[2]); $hf[0]=(int)($hf[0]);$hf[1]=(int)($hf[1]);$hf[2]=(int)($hf[2]); if($hf[2]<$hd[2]){$hf[1]=$hf[1]-1;$hf[2]=$hf[2]+60;} if($hf[1]<$hd[1]){$hf[0]=$hf[0]-1;$hf[1]=$hf[1]+60;} if($hf[0]<$hd[0]){$hf[0]=$hf[0]+24;} return (($hf[0]-$hd[0]).":".($hf[1]-$hd[1]).":".($hf[2]-$hd[2])); } // Appel echo '
La difference d\'heure est : '.difheure($hdeb,$hfin).'
'; } else if (isset($_GET['deb'])==false){ echo '
Veuillez rempire les champs celon ce format: hh:mm:ss
'; } else { echo '
Erreur: Verifiez les champs
'; } ?>

D’abord, J’ai commencé par initialisé à vide les 2 variables $hdeb et $hfin qui vont contenir respectivement l’heure de début et l’heure de fin.
Ensuite, une condition vérifie s’il y a deb envoyé comme paramètre et si ce même deb n’est pas vide (chaine de caractère). Pour la dernière, j’avais voulu ajouté la vérification de la taille du tableau, qui est crée a partir d’explode(), est égale a 3, vu que notre chaine $_GET['deb'] est composé de 3 sous-chaines (si quelqu’un a une meilleur idée, qu’il m’informe par commentaire car je pense que la dernier partie n’est pas à 100% fiable):

if (isset($_GET['deb']) && $_GET['deb']!="" && count(explode(":",$_GET['deb']))==3)

Si cette condition est vérifié, on déclare la fonction difheure() (que j’ai trouvé sur ce site en passant, merci a DB77 pour l’avoir concu) pour l’appeler juste aprés et ainsi avoir la différence d’heure:

function difheure($heuredeb,$heurefin)
// J'ai trouvé cette fonction sur cette page: http://www.asp-php.net/ressources/bouts_de_code.aspx?id=799
// Merci à DB77 pour cette fonction.
{
   $hd=explode(":",$heuredeb);
   $hf=explode(":",$heurefin);
   $hd[0]=(int)($hd[0]);$hd[1]=(int)($hd[1]);$hd[2]=(int)($hd[2]);
   $hf[0]=(int)($hf[0]);$hf[1]=(int)($hf[1]);$hf[2]=(int)($hf[2]);
   if($hf[2]<$hd[2]){$hf[1]=$hf[1]-1;$hf[2]=$hf[2]+60;}
   if($hf[1]<$hd[1]){$hf[0]=$hf[0]-1;$hf[1]=$hf[1]+60;}
   if($hf[0]<$hd[0]){$hf[0]=$hf[0]+24;}
   return (($hf[0]-$hd[0]).":".($hf[1]-$hd[1]).":".($hf[2]-$hd[2]));
}
// Appel
echo '
La difference d\'heure est : '.difheure($hdeb,$hfin).'
';

Si la condition précédente est fausse et $_GET['deb'] n’existe pas, on affiche un petit message pour que l’utilisateur remplis les champs
Sinon, on affiche une erreur:

else if (isset($_GET['deb'])==false){
	echo '
Veuillez rempire les champs celon ce format: hh:mm:ss
'; } else { echo '
Erreur: Verifiez les champs
'; }

Le (x)HTML

Juste un petit formulaire (et la fermeture de la div):

Heure de debut? Format 08:30:00      <input type="text" name="deb" value=""/> Heure de fin? Format 08:30:00           <input type="text" name="fin" value=""/>

Demonstration
Télécharger


J’éspere que ce petit tutoriel vous a plu.

Cet article vous a plu?
Abonnez-vous au flux RSS et vous aurez tous les nouveaux articles délivrés pour vous!
2 Comments:
  1. [...] This post was mentioned on Twitter by Diana, LOvev'cade and LOvev'cade, TuniLame. TuniLame said: #PHP: Calculez la différence entre deux temps http://bit.ly/asQ8Mm #webmaster #freelance pour ceux(celles) qui sont payé(e)s à l'heure. [...]

  2. fabien 9 jan, 2012

    Merci pour l’explication

Post your comment




Get Adobe Flash playerPlugin by wpburn.com wordpress themes
Celadon theme by the Themes Boutique