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

Java Discussion :

Comparaison entre deux dates de format différents


Sujet :

Java

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut Comparaison entre deux dates de format différents
    Je sais que ma question va vous paraître très bête et je m'en excuse d'avance.

    alors voilà, je souhaiterai faire une comparaison entre deux dates, mais qui sont de format différents

    J'ai une date qui me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.dateDebutModif : Mon Mar 31 00:00:00 CEST 2014
    et une autre date qui me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    semaineDtoVerif.getDateDebutSem()  : 2014-03-31

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (semaineDtoVerif.getDateDebutSem() == this.dateDebutModif)
    mais bien évidemment cela ne marche pas ...:/

    Merci beaucoup pour votre aide
    Comment puis je faire pour les comparer ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Tu ne le sais pas encore, mais non, la question n'est pas si bête que ça. Elle est juste posée avec beaucoup d'ignorance, mais en même temps, le principe d'une question c'est qu'on sait pas tout.

    Deux choses :
    - On ne compare jamais des objets avec ==. On utilise equals(). Ce qu'il fallait essayer c'est (semaineDtoVerif.getDateDebutSem().equals(dateDebutModif)).
    ... Et ça ne trouve pas non plus l'égalité. Ce qui nous amène au deuxième point.

    - Il ne s'agit pas de formats, il s'agit de classes, de typage.
    Je suis à peu près sûr que l'une de tes classes est un java.sql.Date et l'autre un java.util.Date. C'est pas le même package, donc pas la même classe, donc pas la même chose, et c'est pour ça que ça s'affiche pas pareil avec un println().
    Comme c'est pas la même chose, tu ne peux pas espérer qu'ils sachent se comparer l'un à l'autre, et donc tu vas devoir indiquer toi-même comment les comparer.

    Solution:
    Il y en a trois.
    - D'abord, ça ne sert à rien de mélanger java.sql.Date et java.util.Date. Ce serait plus malin d'en choisir un des deux et d'avoir seulement celui-ci et pas l'autre. Problème résolu.
    Bon, en fait il faut choisir java.util.Date parce que java.sql.Date ne sert à rien, juste un héritage stupide des temps anciens. On s'en sert que quand on a vraiment pas le choix et on le transforme tout de suite en java.util.Date.

    - Sinon, il suffit de convertir le java.sql.Date en java.util.Date et de les comparer avec equals() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.util.Date debutSemaine = new java.util.Date(semaineDtoVerif.getDateDebutSem().getTime());
     
    if(debutSemaine.equals(dateDebutModif)) {
    - Enfin, la simplicité, utiliser compareTo() au lieu de equals(). On peut pas le deviner, mais ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (semaineDtoVerif.getDateDebutSem().compareTo(dateDebutModif) == 0)

    (Le programmeur habitué pourra me faire remarquer que si, puisque ces deux dates savent se comparer avec compareTo(), on serait en droit d'attendre qu'elles sachent le faire avec equals(), censé être cohérent dans ses résultats avec compareTo(). Oui, ils devraient être cohérents, mais non, ils le sont pas. C'est une limitation de ces classes, qu'on ne remarque pas souvent.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    J'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.util.Date debutSemaine = new java.util.Date(semaineDtoVerif.getDateDebutSem().getTime());
     
    if(debutSemaine.equals(dateDebutModif)) {
    et ça marche niquel

    Merci beaucoup pour votre réponse rapide et éclairée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/10/2010, 13h32
  2. erreur comparaison entre deux date
    Par offspring dans le forum JDBC
    Réponses: 7
    Dernier message: 06/06/2008, 09h23
  3. Réponses: 4
    Dernier message: 29/01/2008, 16h01
  4. Comparaison entre deux dates
    Par sylvaindenisbe dans le forum VBA Access
    Réponses: 28
    Dernier message: 14/05/2007, 16h31
  5. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16

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