begin process at 2010 02 10 17:44:09
  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 :11 794

Auteur : batrox

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
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 Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
Source avec Zip Source avec une capture CALENDRIER DES RÉSERVATIONS EN PHP par mathieubond
Source avec Zip GÉNÉRATEUR DE DATE DANS TOUTES LES LANGUES DU MONDE EN (PHP)... par abdelaziz_info
CALCULER LA PHASE DE LA LUNE - MOON PHASE par CristianCCDB
Source avec Zip Source avec une capture UN CALENDRIER SOUS LA FORME D'UN TABLEAU par d54

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.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,530 sec (4)

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