Как сравнить две даты вместе со временем в java

У меня есть два объекта Date с указанным ниже форматом.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String matchDateTime = sdf.parse("2014-01-16T10:25:00");
Date matchDateTime = null;

try {
    matchDateTime = sdf.parse(newMatchDateTimeString);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

// get the current date
Date currenthDateTime = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date dt = new Date();
String currentDateTimeString = dateFormat.format(dt);
Log.v("CCCCCurrent DDDate String is:", "" + currentDateTimeString);

try {                   
    currenthDateTime = sdf.parse(currentDateTimeString);
} catch (ParseException e) {
    // TODO Auto-generated catch block 
    e.printStackTrace();
}

Теперь я хочу сравнить эти две даты вместе со временем. Как я должен сравнивать на Java.

Спасибо

Ответ 1

Так как Date реализует Comparable<Date>, это так же просто, как:

date1.compareTo(date2);

Как указано в контракте Comparable, он вернет отрицательное целое число/нуль/положительное целое число, если date1 считается меньше/того же самого, что и/больше, чем date2 соответственно (т.е. до/того же/после в этот случай).

Обратите внимание, что Date также имеет методы .after() и .before(), которые возвращают логические значения.

Ответ 2

Альтернатива -....

Преобразуйте обе даты в миллисекунды ниже

Date d = new Date();
long l = d.getTime();

Теперь сравните оба длинных значения

Ответ 3

Используйте compareTo()

Возвращаемые значения

0, если аргумент Date равен этой дате; значение меньше 0, если эта дата предшествует аргументу Date; и значение больше 0, если эта дата после аргумента Date.

Как

if(date1.compareTo(date2)>0) 

Ответ 4

Альтернативой является Joda-Time.

Использовать DateTime

DateTime date = new DateTime(new Date());
date.isBeforeNow();
or
date.isAfterNow();

Ответ 5

 // Get calendar set to the current date and time
Calendar cal = Calendar.getInstance();

// Set time of calendar to 18:00
cal.set(Calendar.HOUR_OF_DAY, 18);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

// Check if current time is after 18:00 today
boolean afterSix = Calendar.getInstance().after(cal);

if (afterSix) {
    System.out.println("Go home, it after 6 PM!");
}
else {
    System.out.println("Hello!");
}