Java 日期比较
在开发过程中,我们可能会遇到选择日期,作为筛选条件,有个开始时间,和截止时间,但是在处理相关的逻辑的过程中,我们还是需要去判断,开始时间不能比截止时间大,自己在开发过程中,总结出一些方法,如下:
- 方法一:
通过java自带的api去直接处理,方便又快捷,有before(Date date),after(Date date),我们进入该api后,看到内部原理机制如下` /**
* Returns if this {@code Date} is after the specified Date.
*
* @param date
* a Date instance to compare.
* @return {@code true} if this {@code Date} is after the specified {@code Date},
* {@code false} otherwise.
*/
public boolean after(Date date) {
return milliseconds > date.milliseconds;
}
/**
* Returns if this {@code Date} is before the specified Date.
*
* @param date
* a {@code Date} instance to compare.
* @return {@code true} if this {@code Date} is before the specified {@code Date},
* {@code false} otherwise.
*/
public boolean before(Date date) {
return milliseconds < date.milliseconds;
}`
在此我们这里的start与end都是Date类型,具体用法:
before
if (java.sql.Date.valueOf(start).before(java.sql.Date.valueOf(end))){
//处理相关的逻辑
}
after
if (java.sql.Date.valueOf(start).after(java.sql.Date.valueOf(end))){
//do your action
}
- 方法二:
其实就是把他们转换成milliseconds,然后直接作比较,其实就是我们官方自己的api,before、after点击入去看,最终都是在比较milliseconds。
public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2后");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2前");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}