4 votes

Java dit que ces 2 objets Date ne sont pas égaux

J'utilise Gson pour convertir un objet java.util.Date en Json, puis reconvertir le Json en un objet java.util.Date :

    Date date = new Date();
    System.out.println("date=" + date + "; date.getTime()=" + date.getTime());
    String json = gson.toJson(date);
    System.out.println("date in json format=" + json);
    Date newDate = gson.fromJson(json, Date.class);
    System.out.println("newDate=" + newDate + "; gettime=" + date.getTime());
    if (!newDate.equals(date)) {
        System.out.println("dates are not the same - bad");
    }
    else
        System.out.println("dates are the same - good");

Les 2 objets Date devraient être égaux, mais comme vous pouvez le voir dans le résultat, ils ne le sont pas :

date=Fri Nov 23 12:18:21 EST 2012; date.getTime()=1353691101023
date in json format="Nov 23, 2012 12:18:21 PM"
newDate=Fri Nov 23 12:18:21 EST 2012; gettime=1353691101023
dates are not the same - bad

Comment les objets Date peuvent-ils être différents, alors que la Javadoc de la méthode Date.equals() indique que "deux objets Date sont égaux si et seulement si la méthode getTime renvoie la même valeur longue pour les deux" ? Comme vous pouvez le voir dans le résultat, les deux objets Date renvoient la même valeur pour getTime().

10voto

NPE Points 169956

Le troisième println() imprime getTime() du mauvais objet :

System.out.println("newDate=" + newDate + "; gettime=" + date.getTime());
                                                         ^^^^ should be newDate

Je pense qu'une fois que vous aurez imprimé newDate.getTime() vous découvrirez qu'elle diffère de celle de l'Union européenne. date.getTime() .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X