如何在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之间?
当前回答
使用compareTo:
date1.compareTo (date2);
其他回答
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。
这个方法对我很管用:
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(参见如何使用…)
使用compareTo:
date1.compareTo (date2);
比较这两个日期:
Date today = new Date();
Date myDate = new Date(today.getYear(),today.getMonth()-1,today.getDay());
System.out.println("My Date is"+myDate);
System.out.println("Today Date is"+today);
if (today.compareTo(myDate)<0)
System.out.println("Today Date is Lesser than my Date");
else if (today.compareTo(myDate)>0)
System.out.println("Today Date is Greater than my date");
else
System.out.println("Both Dates are equal");