Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul d'une date

Sujet résolu
    3 septembre 2006 à 3:01:14

    Bonjour à tous,

    Je fais quelques tests avec PHP, et la j'ai réfléchis à un truc qui pourrait me servir plus tard mais qui est asser compliqué.

    Je m'explique mieux.

    Enfaite je voulais savoir comment je pourrait faire si par exemple je voudrai faire "+ 30" a une date.
    Exemple, ajourd'hui nous nommes le 03/09/2006 et en faisant "+30" j'obtiendrai la date "03/10/2006".

    J'espère que vous m'avez compris et que vous pourrez m'aider.

    A+
    • Partager sur Facebook
    • Partager sur Twitter
      3 septembre 2006 à 3:17:16

      Le mieux c'est de stocker ta date sous forme de timestamp. (Tu peux obtenir le timestamp actuel grâce à la fonction time()).

      Tu fais tes calculs sur ce nombre (Ex : Ajouter 30 jours : time()+30*24*60*60)

      Et une fois que tu as le résultat final, tu l'affiches grâce à la fonction date()

      D'une manière générale, la fonction date ne doit être appelée qu'à l'affichage. Le stockage, les méthodes de calcul, etc. doivent être basés sur le timestamp (Qui est beaucoup plus maniable).

      Si toutefois tu dois *impérativement* travailler sur la chaîne telle que tu l'as présentée... Tu peux faire :

      $chaine="03/09/2006"; //Ta date actuelle
      $date=explode('/',$chaine);


      Et là, tu as :

      $date[0] : Le jour actuel
      $date[1] : Le mois actuel
      $date[2] : L'année actuelle

      Il ne te reste qu'à ajouter ce que tu veux là où tu veux. Et à faire les modifications qui s'imposent.

      $date[1]+=floor($date[0]/30);
      $date[2]+=floor($date[1]/12);
      $date[0]=$date[0]%30;
      $date[1]=$date[1]%12;


      Exemple : 46/13/2005 est une date invalide. Après avoir appliqué ces 4 opérations, tu obtiendras (Pas à pas) :

      $date[1] = 13 + 1 = 14 //Le mois
      $date[2] = 2005 + 1 = 2006 //L'année
      $date[0] = 46[30] = 16 //Le jour
      $date[1] = 14[12] = 2 //Le mois

      Et tu auras donc : 16/2/2006 (N'oublie pas d'ajouter les 0 là où ils sont nécessaires, pour avoir 16/02/2006)


      Bien sûr, tous les mois ne faisant pas 30 jours, la gestion d'un calendrier complet est bien plus complexe... Il faut prendre en compte le nombre de jours dans chaque mois, avec, pour février, la contrainte des années bisextiles... etc.

      En clair : Les Timestamps couplés à la fonction date font déjà tout ça. Autant les utiliser :p

      Conclusion : Le 2ème exemple n'est là que pour illustrer le principe. En aucun cas il n'est utilisable de manière sérieuse. Travailler sur des dates sous forme de chaîne est beaucoup plus compliqué que sous forme de timestamp (Il te suffit de connaître la fonction time(), de faire des additions et des multiplications, et de connaître la fonction date() pour afficher à la fin.)

      Il existe peut-être (Probablement ?) des fonctions qui retrouvent un timestamp à partir d'une chaîne de caractères. Fouille un peu la doc si t'en as besoin. (Je ne les connais pas).
      • Partager sur Facebook
      • Partager sur Twitter
        3 septembre 2006 à 3:25:59

        Merci beaucoup.

        Je vais finalement opter pour la première solution :)

        Encore une fois merci.
        • Partager sur Facebook
        • Partager sur Twitter

        Calcul d'une date

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown