2015-10-31 100 views
1

我使用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 

回答

3

您應該使用在日

  • HH小時(0 -23)
  • hh小時am/pm(1-12)

例子:

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

所以,你可以看到你在一邊有12個和00另一方。

+0

我寫了一個應該刪除時間組件的截斷函數。只是,它將日期中午12點而不是午夜!那是因爲我使用了c.set(Calendar.HOUR,0);而不是c.set(Calendar.HOUR_OF_DAY,0); – Teddy