Fonction datediff : calcule le temps entre deux dates

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 195 fois - Téléchargée 28 fois

Contenu du snippet

Cette fonction calcule la différence de temps entre deux dates dans l'unité de votre choix si vous ne voulez pas l'effectuer dans la requete Mysql/SQL/etc.
Exemple :
$date1="01/02/2002 16h05"
$date2="01/02/2002 16h10"
$mode=60 (le mode est à exprimer en sec : si vous voulez le resultat en minutes alors $mode=60 ; 3600 pour le recuperer en heure )

date_diff("01/02/2002 16h05","01/02/2002 16h10",60)= 5
date_diff("01/02/2002 16h05","01/02/2002 17h05",3600)= 1

Source / Exemple :


function date_diff($date1,$date2,$mode) {
      $P1=explode(" ",date("d m Y H i s",strtotime($date1)));
      $P2=explode(" ",date("d m Y H i s",strtotime($date2)));

      return (round((mktime($P2[3],$P2[4],$P2[5],$P2[1],$P2[0],$P2[2]) -
                mktime($P1[3],$P1[4],$P1[5],$P1[1],$P1[0],$P1[2]))/$mode));
}

Conclusion :


Cette fonction est souvent utile et il n'en n'existe pas à ma connaissance dans php. Si vous souhaitez ne pas gérer ce calcul dans votre requête cette fonction vous aidera. Evidemment si vous pouvez le faire dans la requete comme expliquez dans le premier commentaire.

A voir également

Ajouter un commentaire

Commentaires

cette fonction est très utile surtout pour des versions de php < 2.3
grand merci
ça marche mais il faut toujours rajouter une journée en plus pour avoir le nbr de jour exactes merci ,
parraccourci
Messages postés
6
Date d'inscription
mercredi 31 août 2005
Statut
Membre
Dernière intervention
12 juin 2010

pourquoi passes tu des formats: date custom => time => "d m Y H i s" => time
plutot que de ne passer que par les formats: date custom => time

en faisant simplement :

return round((strtotime($date2) - strtotime($date1))/$mode);

qui tiendra compte des fuseaux horaires si $date1 et $date2 sont au format DATE_ATOM.
cs_natha
Messages postés
22
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
21 octobre 2005

http://www.phpcs.com/code.aspx?ID=23325 et tu adaptes pour changer le format.
maxelpiratos
Messages postés
43
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 janvier 2006

bonjour,

la fonction dat_diff marche bien mais j essai de la coupler a ma base de donnee pour entrer les variables. seulement, le format de la bdd est yyyy-mm-dd et la rien ne va plus!!! :)

est ce que tu connais une solution? je ne peux pas utiliser une requete car je ne veux rien recuperer mais juste me donner le nombre de jour entre les deux dates.

merci d avance!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.