【问题标题】:Comparison between dates returning odd results返回奇数结果的日期之间的比较
【发布时间】:2015-10-31 15:08:05
【问题描述】:

我用Calendar 类计算了一个日期,然后将它与我从使用 Hibernate 执行的查询中得到的两个日期进行比较。当我比较 endDatethisIter 时,我得到“不相等”的日期。

我尝试打印一些调试语句。如果我打印为Date,我会看到第 1 行的打印文本略有不同。但是,如果我使用 SDF 对其进行格式化并打印,它们在第 2 行的打印文本中看起来完全一样。

日期有什么不同,为什么它没有显示在 SDF 格式的值中。

这是我用来打印调试的代码:

final SimpleDateFormat sdft = new SimpleDateFormat("ddMMyyyyhhmmss");
System.out.println(thisIter + ": " + new Date(r.getFromDate().getTime()) + "(" +  new Date(thisIter.getTime()) + ")" +  new Date(r.getToDate().getTime()));
System.out.println(thisIter + ": " + sdft.format(r.getFromDate().getTime()) + "(" +  sdft.format(thisIter.getTime()) + ")" +  sdft.format(r.getToDate().getTime()));

这是输出:

Wed Oct 07 12:00:00 IST 2015: Sat Oct 03 00:00:00 IST 2015(Wed Oct 07 12:00:00 IST 2015)Wed Oct 07 00:00:00 IST 2015
Wed Oct 07 12:00:00 IST 2015: 03102015120000(07102015120000)07102015120000

【问题讨论】:

    标签: java hibernate date


    【解决方案1】:

    你应该使用

    • HH一天中的小时(0-23)
    • hh 上午/下午 (1-12) 小时

    例子:

    final SimpleDateFormat sdft = new SimpleDateFormat("ddMMyyyyHHmmss");
    

    所以您可以看到一侧有 12,而另一侧有 00。

    【讨论】:

    • 我写了一个截断函数,它应该删除时间分量。只是,它把日期留在中午 12 点而不是午夜!!那是因为我使用了 c.set(Calendar.HOUR, 0);而不是 c.set(Calendar.HOUR_OF_DAY, 0);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    相关资源
    最近更新 更多