Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5665 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  operation sur les dates en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

operation sur les dates en php

n°1153728
dums24
Posté le 19-07-2005 à 14:32:15  profilanswer
 

Bonjour tout le monde!!
 
Aprés avoir parcouru des dizaines de forums je ne trouvai aucune fonction me permettant de faire des calcul de durer en php à partir de deux dates, suite au sujet http://forum.hardware.fr/hardwaref [...] 9104-1.htm, cela m'a donné l'idée de créer une fonction sur les dates, je vous propose donc de la commenter, donnez moi vos points devue afin de l'optimiser...
 
 

Code :
  1. /***********************************************************************************************/
  2. /*Fonction permettant de connaitre les resultats d'opération entre 2 dates                     */
  3. /* -> $operation        : si Addition alors additionne les dates sinon les soustrait           */
  4. /* -> $debut $fin       : doivent avoir une structure identiques Y-m-d H:i:s                   */
  5. /* <- $resultatCalcul   : retourne un resultat H:i:s         (H peut etre sup à 23)            */
  6. /*                          Powered by dum's                                                   */
  7. /***********************************************************************************************/
  8. function operationDate($operation,$debut,$fin)
  9. {
  10. /*division des dates et heures*/
  11. $date = explode(" ", $debut);
  12. $heureDeb = explode(":", $date[1]);
  13. $dateDeb = explode("-", $date[0]);
  14. $date = explode(" ", $fin);
  15. $heureFin = explode(":", $date[1]);
  16. $dateFin = explode("-", $date[0]);
  17. //recuperation du timestamp de la date
  18. $timeStampDep = mktime("00", "00", "00", $dateDeb[1], $dateDeb[2], $dateDeb[0]);
  19. $timeStampDeb = mktime($heureDeb[0], $heureDeb[1], $heureDeb[2], $dateDeb[1], $dateDeb[2], $dateDeb[0]);
  20. $timeStampFin = mktime($heureFin[0], $heureFin[1], $heureFin[2], $dateFin[1], $dateFin[2], $dateFin[0]);
  21. //verification du type d'opération
  22. if($operation=="Addition" )
  23.  $resultat = $timeStampFin + $timeStampDeb - 2*$timeStampDep;
  24. else
  25. {
  26.  //verifie l'anteriorite de la date fin
  27.  if($timeStampFin>=$timeStampDeb)
  28.   $resultat = $timeStampFin - $timeStampDeb;
  29.  else
  30.   $resultat = $timeStampDeb - $timeStampFin;
  31. }
  32. //calcul du nombre de jours
  33. $residu = $resultat % 86400;
  34. $nbJours = floor(($resultat - $residu) / 86400);
  35. //calcul du nombre d'heures  
  36. $resultat = $residu;
  37. $residu = $resultat % 3600;
  38. $nbHeures = floor(($resultat - $residu) / 3600);
  39. //calcul du nombre de minutes
  40. $resultat = $residu;
  41. $residu = $resultat % 60;
  42. $nbMinutes = floor(($resultat - $residu) / 60);
  43. //nombre de secondes
  44. $nbSecondes = $residu;
  45. //formation du resultat final
  46. $nbHeures+=24*$nbJours;
  47. if($nbHeures<10)
  48.  $nbHeures="0".$nbHeures;
  49. if($nbMinutes<10)
  50.  $nbMinutes="0".$nbMinutes;
  51. if($nbSecondes<10)
  52.  $nbSecondes="0".$nbSecondes;
  53. $resultatCalcul=$nbHeures.":".$nbMinutes.":".$nbSecondes;
  54. return $resultatCalcul;
  55. }


 
Pour utiliser cette fonction, il vous suffit de la copier dans votre fichier php, puis pour l'utiliser il vous suffit de l'utiliser comme cela :  

Code :
  1. $date1="2005-07-19 14:00:00";
  2. $date2="2005-07-19 15:00:00";
  3. $resultat=operationDate("Addition",$date1,$date2);
  4. echo "Mon resultat est : ".$resultat;          // affiche : Mon resultat est : 29:00:00


Pour le cas ou on a un volume horaire depassant la journée on increment le nombre de jour...
cas ou nous avons 50h ($date1) a additionner a 15h00($date2)

Code :
  1. $date1="2005-07-21 02:00:00";   //50 heures
  2. $date2="2005-07-19 15:00:00";   //15 heures
  3. //la plus petite date est prise en point de depart ici 2005-07-19
  4. $resultat=operationDate("Addition",$date1,$date2);
  5. echo "Mon resultat est : ".$resultat;          // affiche : Mon resultat est : 65:00:00


Concernant la soustraction, voici le resultat :

Code :
  1. $date1="2005-07-21 02:00:00";   //50 heures
  2. $date2="2005-07-19 15:00:00";   //15 heures
  3. $resultat=operationDate("Soustraction",$date1,$date2);
  4. echo "Mon resultat est : ".$resultat;          // affiche : Mon resultat est : 35:00:00


Pour ces deux calculs, le résultat est calculé de façon a ce qu'il ne soit jamais négatif.
 
Voili, voilou...


Message édité par dums24 le 19-07-2005 à 14:41:05

---------------
Dums - La loi Murphy... une loi bien réelle dans le monde virtuel... - Eleveur de vaches
mood
Publicité
Posté le 19-07-2005 à 14:32:15  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  operation sur les dates en php

 

Sujets relatifs
Bloquer temporairement un site lors d'une opération de maintenance ?mon filtre automatique ne marche pas avec les dates
VB, dates, entiers, et pendaisonComparaison de chaines de caractères (dates)
conversion de dates du VB au MySQLMasque de saisie pour des dates
comparer deux datesproblème vba excel avec les dates
Comparaison de dates sous VBA[MySQL] Question sur les dates et sur 1 requete SQL
Plus de sujets relatifs à : operation sur les dates en php


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)