Сравнение только дат не работает должным образом в Java

У меня две даты для пакета утилиты Java. Оба они показывают одну и ту же дату. Когда я сравниваю оба, это кажется неправильным. Вот мой код и журнал

Date date1=new SimpleDateFormat("dd/MM/yy").parse(lastCall);  
logger.info(date1); -->Mon Sep 18 00:00:00 AST 2017
Date todayDate = new Date(); -->Mon Sep 18 12:36:53 AST 2017
System.out.println("Today date :"+todayDate);

if(date1.after(todayDate)){
     System.out.println("Date1 is after Date2");
}

if(date1.before(todayDate)){
    System.out.println("Date1 is before Date2");
}

if(date1.equals(todayDate)){
    System.out.println("Date1 is equal Date2");
}

Он входит в блок перед и печатает

  System.out.println("Date1 is before Date2");

person Aliy    schedule 18.09.2017    source источник
comment
ну ... я имею ввиду, 00:00:00 идет раньше 12:36:53, верно? Или я просто сумасшедший   -  person Shinra tensei    schedule 18.09.2017
comment
Думаю, вопрос неправильный. Должно быть Как можно сравнивать две даты только по дням? Не для datetime. Есть несколько способов сделать это: вы можете установить для обоих часов значение 0, а затем сравнить и т. Д.   -  person Gunhan    schedule 18.09.2017
comment
@Shinratensei, я просто хочу проверить обе даты. Время можно игнорировать.   -  person Aliy    schedule 18.09.2017
comment
@Aliy, тогда ты ошибаешься. Если вы сравните полные даты, он сравнит все, даже на минимально возможном уровне. Вы должны искать, как сравнивать только даты или как получать дни, месяцы и годы.   -  person Shinra tensei    schedule 18.09.2017
comment
ИМХО, первая часть ответа: избавьтесь от давно устаревших классов Date и SimpleDateFormat. Современный API даты и времени Java, известный как JSR-310 или java.time гораздо приятнее работать с и предлагает класс LocalDate для дат без времени суток, в комплекте с методами isBefore и isAfter.   -  person Ole V.V.    schedule 19.09.2017


Ответы (1)


Части даты такие же, но части времени разные. Итак, сравнив часы, минуты и секунды, вы получите такой результат.

person yılmaz    schedule 18.09.2017
comment
Как это можно покрыть? Я просто хочу, чтобы проверялись только даты - person Aliy; 18.09.2017
comment
@Aliy использовать календарь и удалить информацию о времени (установите значение 0) - person XtremeBaumer; 18.09.2017
comment
Используйте SimpleDateFormat для преобразования объекта Date в формат dd / MM / yyyy, сохраните его как String и сравните эти строки с методом equals. - person yılmaz; 18.09.2017
comment
Я рекомендую вам не использовать для этого давно устаревшие классы Calendar и SImpleDateFormat. См. Связанный вопрос и ответы на него, чтобы найти лучшие альтернативы. - person Ole V.V.; 19.09.2017