如何在Java中比较日期?
例子:
日期为22-02-2010 日期2是今天07-04-2010 Date3是25-12-2010
Date3总是大于date1,而date2总是今天。如何验证今天的日期是否在日期1和日期3之间?
如何在Java中比较日期?
例子:
日期为22-02-2010 日期2是今天07-04-2010 Date3是25-12-2010
Date3总是大于date1,而date2总是今天。如何验证今天的日期是否在日期1和日期3之间?
当前回答
Date有前后两种方法,它们之间的比较如下:
if(todayDate.after(historyDate) && todayDate.before(futureDate)) {
// In between
}
要进行包容性比较:
if(!historyDate.after(todayDate) && !futureDate.before(todayDate)) {
/* historyDate <= todayDate <= futureDate */
}
你也可以试试Joda-Time,但请注意:
Joda-Time是Java SE 8之前的Java事实上的标准日期和时间库。现在要求用户迁移到java。时间(jsr - 310)。
后端端口可用于Java 6和7以及Android。
其他回答
针对Java 8及更高版本进行更新
isAfter () isBefore () isEqual () compareTo ()
这些方法存在于LocalDate、LocalTime和LocalDateTime类中。
这些类内置于Java 8及更高版本中。大部分的java。时间功能在ThreeTen-Backport中向后移植到Java 6和7,并在ThreeTenABP中进一步适应Android(参见如何使用…)
使用compareTo:
date1.compareTo (date2);
试试这个
public static boolean compareDates(String psDate1, String psDate2) throws ParseException{
SimpleDateFormat dateFormat = new SimpleDateFormat ("dd/MM/yyyy");
Date date1 = dateFormat.parse(psDate1);
Date date2 = dateFormat.parse(psDate2);
if(date2.after(date1)) {
return true;
} else {
return false;
}
}
以下是比较日期的最常用方法(我的首选方法1):
方法1:使用Date.before(), Date.after()和Date.equals()
if (date1.after(date2)) {
System.out.println("Date1 is after Date2");
}
if (date1.before(date2)) {
System.out.println("Date1 is before Date2");
}
if (date1.equals(date2)) {
System.out.println("Date1 is equal Date2");
}
方法2:Date.compareTo()
if (date1.compareTo(date2) > 0) {
System.out.println("Date1 is after Date2");
} else if (date1.compareTo(date2) < 0) {
System.out.println("Date1 is before Date2");
} else {
System.out.println("Date1 is equal to Date2");
}
方法3:calendar .before(), calendar .after()和calendar .equals()
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
if (cal1.after(cal2)) {
System.out.println("Date1 is after Date2");
}
if (cal1.before(cal2)) {
System.out.println("Date1 is before Date2");
}
if (cal1.equals(cal2)) {
System.out.println("Date1 is equal Date2");
}
使用getTime()获取日期的数值,然后使用返回值进行比较。