[PHP]Calculer le nombre de samedi se trouvant entre 2 dates

Calculer le nombre de samedi se trouvant entre 2 dates [PHP] - PHP - Programmation

Marsh Posté le 02-02-2005 à 16:20:57    

Voila j'ai 2 dates et j'aimerais savoir combien il y a de samedi entre ces 2 dates!!!
 
Merci

Reply

Marsh Posté le 02-02-2005 à 16:20:57   

Reply

Marsh Posté le 02-02-2005 à 16:22:42    

prends un calendrier.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-02-2005 à 16:23:41    

bah tu calcule le nombre de jour qu'il y a entre tes deux dates et tu divise par 7...  :lol:

Reply

Marsh Posté le 02-02-2005 à 16:24:44    

zentakk a écrit :

bah tu calcule le nombre de jour qu'il y a entre tes deux dates et tu divise par 7...  :lol:


c'est pas tout à fait ça...[:aloy]
Enfin bref, tu as la fonction date() de php + tes neurones qui doivent te permettre de faire ça très bien...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-02-2005 à 17:03:59    

A l'arrache, j'ai pas testé et c'est en pseudo-code approximatif :

Code :
  1. var int nbJours =  dateDebut - dateFin;
  2. var int i = 0;
  3. // boucle cherchant le 1er Samedi à partir de dateDebut
  4. while ((i < nbJours) && (jours[i] != "Samedi" )) {
  5.   i++;
  6. }
  7. if (i<nbJours) {
  8.   // on est sorti de la boucle en ayant trouvé un "Samedi"
  9.   var int nbJoursRestant = nbJours - i;
  10.   var nbSamedi = 1 + (nbJoursRestant / 7);
  11.   return nbSamedi;
  12. } else {
  13.   // cas où l'interval de dates est tellement petit qu'il n'y a aucun Samedi dedans
  14.   return 0;
  15. }


 
Sauf erreur ou omission, ça doit donner le bon résultat (à +/- 1 près)  :pt1cable:


Message édité par Bidem le 02-02-2005 à 17:06:42
Reply

Marsh Posté le 02-02-2005 à 17:31:12    

On oublie tout ce que j'ai mis plus haut.
 
La fonction date() permet de s'affranchir de la boucle grace à l'option 'w' qui donne le jour dans la semaine (0 pour dimanche et 6 pour Samedi)
 

Code :
  1. $nbJoursAvantPremierSamedi = 6 - date('w', $dateDebut);
  2. $nbSamedi = ($nbJours - $nbJoursAvantPremierSamedi) / 7;


 
Plus simple non ?

Reply

Marsh Posté le 02-02-2005 à 20:56:24    

Voila j'ai créer ce code! A mon avis il y pas d'erreur.  
 

Code :
  1. function nbJour($numeroJour, $J1,$M1,$A1, $J2, $M2,$A2)
  2. {
  3.  // J1 : Jour première date
  4.  // M1 : Mois première date
  5.  // A1 : Année première date
  6.  // J2 : Jour deuxième date
  7.  // M2 : Mois deuxième date
  8.  // A2 : Année deuxième date
  9.  // numeroJour : 1 Dimanche, 2 Lundi,.. 7 Samedi
  10.  $nbJour = 0;
  11.  $Date1 = mktime(0, 0, 0, $M1, $J1, $A1 );
  12.  $Date2 = mktime( 0, 0, 0, $M2, $J2, $A2 );
  13.  $nbJourDiff = ($Date2 - $Date1) / (60*60*24);
  14.  for ($i=0 ; $i<$nbJourDiff+1; $i++)
  15.  {
  16.   $Date1 = mktime(0, 0, 0, $M1, $J1+$i, $A1 );
  17.   if (date("w",$Date1) == $numeroJour-1)
  18.    $nbJour++;
  19.  }
  20.  return $nbJour;
  21. }


---------------
Donne un poisson à un homme il mangera une journée, Apprends lui à pêcher, il mangera toute sa vie...
Reply

Marsh Posté le 03-02-2005 à 09:58:27    

simoes a écrit :

Voila j'ai créer ce code! A mon avis il y pas d'erreur.


Ca va pas non ?  :ouch:
 
Boucler sur toutes les jours entre deux dates et pour chacun d'entre eux, créer une date et tester si c'est le bon jour de la semaine ?!
 
Je veux bien que les machines actuelles soient puissantes et que même pour un intervalle d'un an, ça va blesser personne, mais c'est tuer une mouche au lance-roquettes !!!
 
On avait dit d'utiliser les neurones [:kiki]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 07-02-2005 à 12:00:37    

Je vois pas comment faire plus simple.
 
En ce qui concerne les neurones, il y en a dja 2-3 qui sont grillés... ;)

Reply

Marsh Posté le 07-02-2005 à 13:31:33    

Compte le nombre de jours entre deux dates. Divise par 7 (division entière).
 
Soit n le résultat de cette division. Tu constateras qu'il y a n ou n+1 samedi (ou tout autre jour de la semaine) entre les deux.
 
Pour départager n et n+1, utilise le reste de la division supra et détermine l'écart entre le jour de la date de départ et le jour recherché.
 
Avec 3-4 neurones en état de fonctionnement, c'est faisable :jap:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

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