【问题标题】:Java says these 2 Date objects are not equalJava 说这 2 个 Date 对象不相等
【发布时间】:2012-11-27 20:00:03
【问题描述】:

我正在使用 Gson 将 java.util.Date 对象转换为 Json,然后将 Json 转换回 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");

这 2 个 Date 对象应该相等,但从输出中可以看出,它们不相等:

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

当 Date.equals() 方法的 Javadoc 说“当且仅当 getTime 方法为两者返回相同的 long 值时,两个 Date 对象相等”时,Date 对象如何不同?从输出中可以看出,两个 Date 对象都为 getTime() 返回了相同的值。

【问题讨论】:

    标签: java date


    【解决方案1】:

    第三个println() 打印出错误对象的getTime()

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

    我怀疑一旦你打印出newDate.getTime(),你会发现它与date.getTime()不同。

    【讨论】:

    • 谢谢,我犯了严重的错误。没错,newDate.getTime() 是不同的,因为 Json 不存储毫秒。
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2021-04-19
    • 1970-01-01
    相关资源
    最近更新 更多