如何在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。
其他回答
使用getTime()获取日期的数值,然后使用返回值进行比较。
使用compareTo:
date1.compareTo (date2);
这个方法对我很管用:
public static String daysBetween(String day1, String day2) {
String daysBetween = "";
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date1 = myFormat.parse(day1);
Date date2 = myFormat.parse(day2);
long diff = date2.getTime() - date1.getTime();
daysBetween = ""+(TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
} catch (ParseException e) {
e.printStackTrace();
}
return daysBetween;
}
针对Java 8及更高版本进行更新
isAfter () isBefore () isEqual () compareTo ()
这些方法存在于LocalDate、LocalTime和LocalDateTime类中。
这些类内置于Java 8及更高版本中。大部分的java。时间功能在ThreeTen-Backport中向后移植到Java 6和7,并在ThreeTenABP中进一步适应Android(参见如何使用…)
试试这个
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;
}
}