Différence de dates

Différence de dates - PHP - Programmation

Marsh Posté le 14-04-2004 à 13:26:35    

JE réalise un site personnel en php et j'ai besoin de faire la différence de deux dates pour me donner le nombre de jours entre ces deux dates...
 
Je m'explique :
- La première date est le 25/12/2003
- La deuxième date est le 05/01/2004
 
-> Je voudrais réaliser une différence entre ces deux dates pour que ca me donne : 11 jours, mais je n'y suis pas parvenu.
Qq1 pourrait m'éclairer svp ?

Reply

Marsh Posté le 14-04-2004 à 13:26:35   

Reply

Marsh Posté le 14-04-2004 à 13:48:20    

je ne sais pas si il existe des fonctions toute faite mais au pire tu peux utiliser la fonction mktime(), faire la soustraction des timestamp et calculer le nb de jour ...

Reply

Marsh Posté le 14-04-2004 à 13:50:29    

Elle viennent d'où ces dates ? D'une base de données ? [:figti]

Reply

Marsh Posté le 14-04-2004 à 13:54:56    

mrbebert a écrit :

Elle viennent d'où ces dates ? D'une base de données ? [:figti]  


c'est vrai que si ca vient d'une bdd tu peux le faire directement en sql (avec mysql en tout cas) ...

Reply

Marsh Posté le 14-04-2004 à 14:00:32    

Regarde tu cote des Timestamp!

Reply

Marsh Posté le 14-04-2004 à 15:03:08    

_pegaze_ a écrit :


c'est vrai que si ca vient d'une bdd tu peux le faire directement en sql (avec mysql en tout cas) ...

Je pensais surout à la fonction mysql (mais il existe l'équivalent dans les autres SGBD) TO_DAYS(). Cette fonction renvoie le numéro de jour d'une date.
Dans beaucoup de situations, cela facilite énormément les choses :ouch:  :)

Reply

Marsh Posté le 14-04-2004 à 15:41:15    

question au passage :
 
ca existe une fonction mysql TO_HOURS ??? (g cherché mais sans succès sur le net [:airforceone])
 
A moi aussi ca me faciliterait bien la tache :p


Message édité par lkolrn le 14-04-2004 à 15:41:44
Reply

Marsh Posté le 14-04-2004 à 15:52:06    

LKoLRn a écrit :

question au passage :
 
ca existe une fonction mysql TO_HOURS ??? (g cherché mais sans succès sur le net [:airforceone])
 
A moi aussi ca me faciliterait bien la tache :p


dans la doc mysql que j'ai il n'en font pas mention :/

Reply

Marsh Posté le 14-04-2004 à 16:04:07    

C un scandale! Je m'insurge!
 
Pkoi s'interesser plutot aux jours qu'aux heures :??: Non a la discrimination...
 
(kel talent [:skyx@v])


Message édité par lkolrn le 14-04-2004 à 16:05:15
Reply

Marsh Posté le 14-04-2004 à 17:28:51    

LKoLRn a écrit :

question au passage :
 
ca existe une fonction mysql TO_HOURS ??? (g cherché mais sans succès sur le net [:airforceone])
 
A moi aussi ca me faciliterait bien la tache :p

Tu as la fonction HOUR() qui renvoie l'heure :)
SELECT HOUR('10:05:03') renvoit 10
 
Il y a aussi SECOND(), MINUTE() et plein d'autres :sol:

Reply

Marsh Posté le 14-04-2004 à 17:28:51   

Reply

Marsh Posté le 14-04-2004 à 17:29:51    

mkay...
 
mici bien [:skyx@v]

Reply

Marsh Posté le 14-04-2004 à 19:59:34    

Merci de votre aide.
Voilà ce que j?ai réussi à réaliser cet après midi (je n?avais pas beaucoup de temps pour le faire), ce n?est donc pas du tout optimisé. Avez vous justement quelques remarques à faire ?
 
De plus, j?ai mis quelques commentaires, est-ce que vous pouvez m?éclairer sur ces points.
 

Code :
  1. function nbre_de_jour(){
  2. $annee_debut = mysql_query("select month(anneedebut)
  3.                 from matable;
  4.        where ??? qu?est-ce qu?il faut que je mette? sachant que j?ai bien évidemment plusieurs enregistrements dans ma table. Je veux calculer le nbre de jour entre chaque date de début et de fin de chaque enregistrement et l'afficher dans un tableau.(dans un enregistrement, il a a le nom, la date de debut, la date de fin).
  5. " );
  6. $annee_fin = mysql_query("select month(anneefin)
  7.            from matable
  8. where ???" );
  9. $nbre_jour_debut = mysql_query("select dayofyear(anneedebut)
  10.             from matable
  11. where ???;" );
  12. $nbre_jour_fin = mysql_query("select dayofyear(anneefin)
  13.       from matable
  14.   where ???;" );
  15.  if ($annee_debut - $annee-fin ==0)
  16.  { $nbre = $nbre_jour_debut - $nbre_jour_fin
  17.     return $nbre;}
  18.   
  19.  elseif ( $annee_debut < $annee_fin)
  20.  { $nbre = ($annee_fin - $annee_debut)*(365 - $nbre_jour_debut) + $nbre_jour_fin;
  21.     return nbre;
  22.  }


Message édité par neo-spy le 14-04-2004 à 20:08:55
Reply

Marsh Posté le 14-04-2004 à 20:37:34    

C'est pas très clair tout ca :whistle:  
 
Il y a à la fois une date de fin et une date de début pour chaque enregistrement ?

Reply

Marsh Posté le 14-04-2004 à 20:43:40    

Je savais bien que j'étais pas clair... :)
 
Effectivement, un enregistrement dans matable contient :
nom   datedebut    datefin
 
 
Et j'aimerais affiché dans un tableau :
 
nom1       datedebut1        datefin1       nbredejour1
nom2       datedebut2        datefin2       nbredejour2
....
 
(nbredejour1 étant par ex la différence (en jour) de la datedebut1 et la datefin1)

Reply

Marsh Posté le 14-04-2004 à 20:48:07    

$requete = "SELECT nom, datedebut, datefin, TO_DAYS(datefin)-TO_DAYS(datedebut) AS nb_jours FROM table";
$res = mysql_query($requete);
if (! $res) {
    echo "ERREUR requete";
    exit;
}
while ($r = mysql_fetch_array($res)) {
    echo '<tr><td>' . $r['nom'] . '<td>' . $r['datedebut'] . '<td>' . $r['datefin'] . '<td>' . $r['nb_jours'];
}
 
 
Dans ta table, les colonne de date ont bien le format "date" ?? :whistle:  
(poste la structure de la table utilisée)

Reply

Marsh Posté le 14-04-2004 à 20:50:50    

Oui, elles sont du format 2003/10/27 par ex.
Je te remercie pour cette requete plus simple, je vais la tester.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed