begin process at 2012 02 12 11:10:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > FONCTION DATEDIFF : CALCULE LE TEMPS ENTRE DEUX DATES

FONCTION DATEDIFF : CALCULE LE TEMPS ENTRE DEUX DATES


 Information sur la source

Note :
5,5 / 10 - par 4 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Niveau :Débutant Date de création :14/05/2004 Date de mise à jour :17/05/2004 11:02:06 Vu :16 449

Auteur : batrox

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

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

  • 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));
  • }
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.


 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

Commentaires et avis

Commentaire de Loser le 16/05/2004 08:29:57

Si on a stocker ses dates dans une bdd mysql on peut faire la requete suivant

SELECT ma_table. * , (TO_DAYS( date_expires ) - TO_DAYS( date_ajout )) AS difference
FROM `ma_table` ORDER BY difference

où :

date_expire : date d'expiration sois elle est contenu dans la bdd, sois dans un variable externe

date_ajout : date ajout de la news par exemple

Et bien sur format des dates : yyyy-mm-dd

Commentaire de natha le 01/06/2004 14:49:45

Ce qui est dommage avec cette source c'est que ça ne marchera pas pour les dates antérieures au 01/01/1970. J'ai fait quelque chose qui donne le nombre de jours entre 2 dates quelles qu'elles soient. Faut que je pense à poster ça...

Commentaire de Nifhell le 01/04/2005 17:19:01

Pas mal mais tu devrais tenir compte du passage de l'heure d'été à l'heure d'hiver!! si tu fais:
date_diff("21/03/2005 00h00","28/03/2005 00h00")
ton script comptabilise 1 heure de moins, car dans cette semaine on passe de l'heure d'hiver à l'heure d'été!!
pour éviter ça il faut metter l'option is_dst à 0 dans la fonction mktime:
mktime($P2[3],$P2[4],$P2[5],$P2[1],$P2[0],$P2[2],0)
On pourrait la mettre à 1 mais elle a parfois un comportement bizarre, le tout c'est d'avoir la meme base de calcul lorsque l'on compare deux dates (heure d'été ou heure d'hiver)!
[Source : http://www.nexen.net/docs/php/annotee/function.mktime.php]

Commentaire de maxelpiratos le 27/06/2005 22:19:48

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!

Commentaire de natha le 28/06/2005 07:34:03

http://www.phpcs.com/code.aspx?ID=23325 et tu adaptes pour changer le format.

Commentaire de parraccourci le 27/09/2010 12:10:19

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.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales