Как сравнить две даты вместе со временем в 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!");
}