IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Comparaison date


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut [Dates] Comparaison date
    Bonjour,

    je recupere :

    -une date (le numero du jour sur 2 chiffres, le numero du mois sur 1 chiffre, le numero de l'année sur 4 chiffres)
    - une 2eme date (le numero du jour sur 2 chiffres, le numero du mois sur 1 chiffre, le numero de l'année sur 4 chiffres)

    Comment puis je faire pour verifier si la 2eme est superieure ou égale a la premiere ?

  2. #2
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    J'ai trouvé tout seul comme un grand une solution toute simple que j'avais pas pensé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if($an_fin >= $an_deb && $mois_fin >= $mois_deb && $jour_fin >= $jour_deb){
      		echo 'Date début : '.$jour_deb.'/'.$mois_deb.'/'.$an_deb;
      		echo '<br/>Date fin : '.$jour_fin.'/'.$mois_fin.'/'.$an_fin;
      	}
      	else{
      		echo 'La date de fin de période est antérieure à la date de début de période.';
      	}

  3. #3
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    C'est compliqué ton truc là !

    En découpant ta date avec un explode, puis en passant les éléments des tableaux générés à la fonction mktime.
    Comme tes mois sont sur un chiffre il va falloir que tu passes par str_pad pour compléter les mois.

    Ensuite tu compares les timestamps générés et c'est tout...

  4. #4
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    et apres il dit que ce que je fais c'est compliqué....

  5. #5
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Cela dépends si tu veux coder comme un petit cochon ou faire les choses correctement.
    Tu manipules les dates comme tu le souhaites, mais je ne trouve pas ta méthode très *propre*.

    M'enfin c'est ton code et tant qu'on me demande pas d'y mettre les mains dedans tu fais ce que tu veux.

  6. #6
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Nan mais te vexe pas je sais bien que tu as tout a fait raison et c'est pour ca que c'était la premiere chose que j'avais prévu ce matin, je m'y mets...

  7. #7
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    $jour_deb = $_POST['jour_debut'];
    $mois_deb = $_POST['mois_debut'];
    $an_deb = $_POST['annee_debut'];
     
    $jour_fin = $_POST['jour_fin'];
    $mois_fin = $_POST['mois_fin'];
    $an_fin = $_POST['annee_fin'];
     
    $timestamp_debut = mktime(0, 0, 0, $mois_debut, $jour_debut, $an_debut);
    $timestamp_fin = mktime(0, 0, 0, $mois_fin, $jour_fin, $an_fin);
     
    echo 'Date début : '.$jour_deb.'/'.$mois_deb.'/'.$an_deb;
    echo '<br/>Date fin : '.$jour_fin.'/'.$mois_fin.'/'.$an_fin;
    echo '<br/>debut : '.$timestamp_debut;
    echo '<br/>fin : '.$timestamp_fin;
    ?>
    j'obtient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Date début : 1/1/2007
    Date fin : 1/1/2007
    debut : 946681200
    fin : 1167606000
    Qulequ'un peut m'expliquer pourquoi j'obtient pas le meme timestamp alors que j'ai la meme date ?

  8. #8
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Parce que :

    <?php
    $jour_deb = $_POST['jour_debut'];
    $mois_deb = $_POST['mois_debut'];
    $an_deb = $_POST['annee_debut'];

    $jour_fin = $_POST['jour_fin'];
    $mois_fin = $_POST['mois_fin'];
    $an_fin = $_POST['annee_fin'];

    $timestamp_debut = mktime(0, 0, 0, $mois_debut, $jour_debut, $an_debut);
    $timestamp_fin = mktime(0, 0, 0, $mois_fin, $jour_fin, $an_fin);

    echo 'Date début : '.$jour_deb.'/'.$mois_deb.'/'.$an_deb;
    echo '<br/>Date fin : '.$jour_fin.'/'.$mois_fin.'/'.$an_fin;
    echo '<br/>debut : '.$timestamp_debut;
    echo '<br/>fin : '.$timestamp_fin;
    ?>

  9. #9
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    en revenant de nantes la digue la digue....

    j'ai du mal a 9h le matin moi...

  10. #10
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Et moi donc !

    Désolé si le ton plus t'a paru un peu vexant...

  11. #11
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Pourquoi tu dis que mes jours et mois soit sur un chiffre va me poser un problème ?

    a priori après quelques test, cela n'en pose pas....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
    $jour_deb = $_POST['jour_debut'];
    $mois_deb = $_POST['mois_debut'];
    $an_deb = $_POST['annee_debut'];
     
    $jour_fin = $_POST['jour_fin'];
    $mois_fin = $_POST['mois_fin'];
    $an_fin = $_POST['annee_fin'];
     
    $timestamp_debut = mktime(0, 0, 0, $mois_deb, $jour_deb, $an_deb);
    $timestamp_fin = mktime(0, 0, 0, $mois_fin, $jour_fin, $an_fin);
     
    if($timestamp_debut <= $timestamp_fin){
              //bla bla bla
     }
    ?>

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Points : 97
    Points
    97
    Par défaut
    bah si tu codes les mois sur un chiffre :s comment tu fais pour les mois d'octobre novembre et décembre ?? 10 11 et 12 ?

  13. #13
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    quand ej dis sur un chiffre ca veut dire par exemple que au lieu de 01 j'ai 1 mais sinon j'ai bien 10 11 et 12

  14. #14
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    tu es parti(e) macbook ?

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    salut,
    à propos des mois (ou jours) sur un chiffre, j'ai eu un problème en voulant enregistrer dans MySQL. Du coup, je suis obligé de reformater les dates exactement : 0000-00-00.
    Peut-être que celui qui t'a parlé de ça pensait à ce pb.

  16. #16
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Apparement mktime accepte le format de mois sur un seul chiffre.
    Mais je pense qu'il se trouvera un jour le cas où il te faudra manipuler tes données de date dans un format *valide*. Pour cette raison je te conseil de compléter tes données avec str_pad.

  17. #17
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    ok merci

    comment je fais alors ?

    est ce que cela est corect ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str_pad ( $mois_deb,2,0,STR_PAD_RIGHT)

Discussions similaires

  1. Problème de comparaison : date.compareto(date)
    Par 304bl dans le forum Android
    Réponses: 13
    Dernier message: 31/03/2012, 02h37
  2. comparaison date système date utilisateur
    Par bambino13 dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 03/07/2009, 13h40
  3. Comparaison Date avec Date dans une table avec Dlookup
    Par adrien.gendre dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/07/2007, 18h55
  4. [Dates] Comparaison de dates > 2037
    Par hisy dans le forum Langage
    Réponses: 1
    Dernier message: 09/12/2005, 12h08
  5. [DATE] comparaison
    Par Tigris94 dans le forum C++
    Réponses: 5
    Dernier message: 04/11/2004, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo