2015-10-31 7 views
1

Я вычислил одну дату с классом Calendar, а затем сравнил ее с двумя датами, которые я получил из запроса, выполненного с помощью Hibernate. Когда я сравниваю даты, я становлюсь «не равным», когда сравниваю endDate с thisIter.Сравнение дат, возвращающих нечетные результаты

Я попробовал распечатать некоторые отладочные заявления. Если я печатаю как 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

Смежные вопросы