Сравните дату java.util.Calendar с датой java.util.Date.

Мне нужно сравнить время календаря с датой. Я написал ниже код.

Calendar now = Calendar.getInstance();
now.set(Calendar.SECOND, 0);
Date date = new Date();
date.setSeconds(0);
System.out.println(date);
System.out.println(now.getTime());
System.out.println(date.compareTo(now.getTime()));

Выход

Fri Dec 01 16:54:00 IST 2017
Fri Dec 01 16:54:00 IST 2017
1

Кажется, дата использования больше календарной даты. Почему это терпит неудачу? Как записать сравнение этих дат?

Изменить 1:- Моя проблема в том, что мне нужно сравнить дату использования (хранится в базе данных), скажем, 2017-12-01 16:41:00.0 с текущей датой и временем, что такое подход записи?

2 ответа

Проверьте миллис:

    System.out.println(now.getTime().getTime());
    System.out.println(date.getTime());
    System.out.println(now.getTime().getTime() - date.getTime());

Затем вы видите, что есть (иногда) разница.

Простой способ удалить секунды / миллис является подсчет количества минут

// compare the minutes, ignoring the seconds/milli-seconds.
if (now.getTime().getTime() / 60_000 == date.getTime() / 60_000)

Вы также можете использовать TimeUnit

if (TimeUnit.MILLISECONDS.toMinutes(now.getTime().getTime()) == 
    TimeUnit.MILLISECONDS.toMinutes(date.getTime()))

если вы предпочитаете использовать библиотеку, чем математика.

Другие вопросы по тегам