java日期比较的四种方法
程序员文章站
2022-05-05 14:51:48
...
java日期比较的四种方法
package 日期比较;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
/**
* 日期比较的四种方法 测试
*/
public class DateCompare {
/**
* 第一种:java.util.Date 提供了两个比较日期的经典方法compareTo()
* 1.如果两个日期相等,就返回值0
* 2.如果Date在date参数之后,则返回值大于0。
* 3.如果Date在date参数之前,则返回值小于0。
*/
@Test
public void test1() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2009-01-01");
Date date2 = sdf.parse("2019-01-01");
System.out.println(date1);
System.out.println(date2);
if(date1.compareTo(date2) >0){
System.out.println("Date1 时间在 Date2 之后");
}else if (date1.compareTo(date2) < 0) {
System.out.println("Date1 时间在 Date2 之前");
} else if (date1.compareTo(date2) == 0) {
System.out.println("Date1 时间与 Date2 相等");
} else {
System.out.println("程序怎么会运行到这里?正常应该不会");
}
}
/**
* 第二种方法
* 使用java.util.Calendar比较两个Date日期
*/
@Test
public void test2() throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = format.parse("2010-10-10");
Date date2= format.parse("2020-10-10");
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(date1);
c2.setTime(date2);
if(c1.equals(c2)){
System.out.println("两个时间相等");
} else if(c1.after(c2)){
System.out.println("date1 在 date2 的后面");
}else if(c1.before(c2)){
System.out.println("date1 在 date2 的前面");
}else{
System.out.println("杨峰王八蛋");
}
}
/**
* 第三种方法
*一种语义上比较友好的方法来比较两个java.util.Date
*/
@Test
public void test3() throws Exception{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = format.parse("2010-10-10");
Date date2 = format.parse("2020-10-10");
if(date1.after(date2)){
System.out.println("date1 在 date2 后面");
}else if(date1.before(date2)){
System.out.println("date1 在 date2 前面");
}else if(date1.equals(date2)){
System.out.println("date1 与 date2 的时间一样");
}
}
/**
* 第四种方法
* Java8 中的比较方法
* 在Java 8中,可以使用新的isBefore(),isAfter(),
* isEqual()和compareTo()来比较LocalDate,LocalTime和LocalDateTime
* 类 java.time.LocalDate
*/
@Test
public void test4() throws Exception{
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date1 = LocalDate.of(2020, 11, 11);
LocalDate date2 = LocalDate.of(2010, 11, 11);
System.out.println(date1);
System.out.println(date2);
String date11 = formatter.format(date1);
String date22 = formatter.format(date2);
System.out.println(date11);
System.out.println(date22);
// if(date1.isAfter(date2)){
// System.out.println("date1 在 date2 的后面");
// }else if(date2.isBefore(date2)){
// System.out.println("date1 在 dat2 的前面");
// }else if(date1.isEqual(date2)){
// System.out.println("两个时间相等");
// }else{
// System.out.println("代码怎么会运行到这里呢");
// }
if(date1.compareTo(date2) > 0){
System.out.println("date1 时间在 date2 的后面");
}else if(date1.compareTo(date2) == 0){
System.out.println("date1 与 date2 的时间相等");
}else if(date1.compareTo(date2) < 0){
System.out.println("date1 时间在 date2 的前面");
}else{
System.out.println("你觉得会运行到这个吗");
}
}
}