PHP date

Résolu
Bonjour,

J'ai un formulaire qui me retourne une date de début et une date de fin.
Je souhaiterai savoir comment trouvé toute les dates comprise entre ces deux là

Exemple:
début : mercredi 20 janvier 2009
fin : vendredi 22 mai 2009

Pour effectuer le test et trouvé si la date existe dans mon tableau, c'est pas un problème, mais comment testé toute les date comprise entre ceux deux là par exemple ?

Merci beaucoup pour votre aide qui me sera précieuse..
Configuration: Windows XP
Safari 525.19

1 réponse

Résumé de la discussion

La problématique consiste à parcourir toutes les dates entre une date de début et une date de fin saisies via un formulaire, afin de vérifier l'existence de chaque jour dans un tableau. La meilleure réponse propose d'utiliser PHP et une fonction qui convertit une date écrite en français (« jour mois année ») en timestamp via mktime pour pouvoir itérer sur l'intervalle. Elle illustre la méthode avec un exemple ('17 juin 2007') et précise d'ajouter des validations pour vérifier le format et les valeurs, afin d'éviter les erreurs lors de l'extraction des données. Cette approche suppose de valider les entrées (structure jour/mois/année et mois en français) et de gérer les conversions de noms de mois pour éviter les erreurs dans l'intervalle.

Bobot (l’IA à votre service)
  1. 0
    1. En fait, j'ai déjà vu tout sa, mais je vois pas comment associé sa à une date sous la forme 15 janvier 2009 par exemple, c'est important de pouvoir tester ces valeurs là parce que apres, je recherche l'existence du mots dans un tableau...
      0
    2. @eXoTu fais une petite fonction de conversion, qui te resort à partir de la chaine 15 janvier 2009 le jour, le mois et l'année sous forme numérique...

      Pas très compliqué selon la forme de ta date, au pire une petite expression régulière te sortira facilement le bon résultat.
      0
    3. @eXo
      $debut = mktime(0, 0, 0, 1, 20, 2009); //janvier 20 2009 (notation américaine) 
      $fin = mktime(0, 0, 0, 5, 22, 2009); //mai 22 2009 
      
      $i= $debut + 86400; // avance d'un jour, 1 jour = 86400 secondes
      
      echo "Voici les dates entre le ".date("d/m/Y", $debut)." et le ".date("d/m/Y", $fin)."<br/>";
      while($i < $fin)
      {
      	echo date("d/m/Y", $i)."<br/>";
      	$i+=86400; // + 1 jour
      }
      


      Ensuite pour les variables debut et fin à toi de faire en sorte de reconnaitre que janvier = 1 février=2 ...
      0
    4. @eXoBon une petite piste pour la fonction :
      <?php
      function my_mktime( $date ) {
        $tmpDate = explode( ' ', $date );
        $jour = $tmpDate[0];
        $mois = strtolower( $tmpDate[1] );
        $annee = $tmpDate[2];
        switch ( $mois ) {
          case 'janvier': $mois=1; break;
          case 'février' : $mois=2; break;
          // etc
        }
        return mktime(0, 0, 0, $mois, $jour, $annee);
      }
      
      // Utilisation :
      $date = my_mktime( '17 juin 2007' );
      ?>
      Attention, cette fonction ne fait actuellement aucun contrôle sur la validité des données : il faudrait vérifier qu'aprèe le explode on ait bien trois parties, ni plus, ni moins, que le jour et l'année sont numériques et valides, que le mois soit valide...
      0
    5. @pyschopatheBah avec nos deux post, on a résolu le problème =)
      0