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 Java Discussion :

comparer format de deux dates


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Par défaut comparer format de deux dates
    Bonjour,

    J'aimerai savoir comment comparer le format de deux dates.
    Dans mon appli, je rentre une date de début et une date de fin. J'aimerai donc être sûr que :
    1) mes dates sont valides
    2) mes dates sont au même format
    3) la date de début est inférieure à la date de fin

    Par exemple :
    date1 = 2002-09-25 (format yyyy-MM-dd)
    date2 = 2004/11/12 (format yyyy/MM/dd)

    J'aimerai dans le cas où elles ne sont pas au même format je lève une exception.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Marrant. Moi je préfère fixer un seul format de date, et l'utilisateur doit s'y tenir, un point c'est tout. (Ou à la rigueur il peut définir un autre format dans ses préférences.)

    Pour faire ça, je ferais :

    - D'abord je construis un tableau DateFormat[] qui contient les formats de date que je veux bien accepter. Je les mets tous setLenient(false) pour qu'ils refusent les dates invalides.

    - Quand je veux valider deux dates :
    - Pour chaque DateFormat,
    -- Je parse date1 avec.
    -- Je parse date2 avec.
    -- Si une exception est arrivée à l'un ou l'autre, alors soit la date est invalide, soit elle n'est pas au format en question. Passer au format suivant dans la liste.
    -- S'il n'y a pas d'exception, les deux dates sont valides, et sont dans le format en question, donc dans le même format.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Par défaut
    Effectivement, l'idéal est d'avoir un seul format. Mais les specs de mon appli spécifient deux formats : yyyy/MM/dd et yyyy/MM/dd HH:mm:ss.

    Je vais tester ton algo.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Par défaut
    Voilà ce que j'ai fait :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static boolean isValidDate(String dateString) {
        try {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
     
            formatter.setLenient(false);
            formatter.parse(dateString);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
    Mais le problème c’est que quand je mets ‘2009/22/18’ elle renvoie 'true' alors que logiquement les mois s’arrêtent à 12.
    Ils interprètent 22 comme 10 cad octobre.

    Est ce que c'est normal ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    A vue d'œil si tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    formatter.setLenient(false);
    C'est pas normal que ça retourne "true".
    tu es sur que le code que tu donnes est bien celui qui a été exécuté??

    a+

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Par défaut
    Salut,

    effectivement,après vérification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String testDate = "2004/22/18";
    boolean result = isValidDate(textDate); //result = false;
    Par contre quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String textDate = "2004/10/25 20:52:10";
    isValidDate(textDate);
    la méthode renvoie :
    Bizarre quand même !
    Est ce normal ?

Discussions similaires

  1. Comparer deux dates au format : mid(date, 1, 10)
    Par Superkoala42 dans le forum VBScript
    Réponses: 2
    Dernier message: 08/07/2014, 08h48
  2. Comparer deux dates format jj/mm/aaaa
    Par Erwy dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h11
  3. Comparer deux dates au format TEXT
    Par ptilemare dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/07/2010, 22h39
  4. Comparer deux dates
    Par LoicH dans le forum C++Builder
    Réponses: 4
    Dernier message: 04/03/2005, 22h53
  5. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08

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