详解在java中进行日期时间比较的4种方法

所属分类: 软件编程 / java 阅读数: 102
收藏 0 赞 0 分享

1. Date.compareTo()

java.util.Date提供了在Java中比较两个日期的经典方法compareTo()。

  • 如果两个日期相等,则返回值为0。
  • 如果Date在date参数之后,则返回值大于0。
  • 如果Date在date参数之前,则返回值小于0。
@Test
void testDateCompare() throws ParseException {
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 Date date1 = sdf.parse("2009-12-31");
 Date date2 = sdf.parse("2019-01-31");

 System.out.println("date1 : " + sdf.format(date1));
 System.out.println("date2 : " + sdf.format(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("程序怎么会运行到这里?正常应该不会");
 }
}

输出结果:

date1 : 2009-12-31
date2 : 2019-01-31
Date1 时间在 Date2 之前

2. Date.before(),Date.after()和Date.equals()

一种语义上比较友好的方法来比较两个java.util.Date

@Test
void testDateCompare2() throws ParseException {
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 Date date1 = sdf.parse("2009-12-31");
 Date date2 = sdf.parse("2019-01-31");

 System.out.println("date1 : " + sdf.format(date1));
 System.out.println("date2 : " + sdf.format(date2));

 if (date1.after(date2)) {
  System.out.println("Date1 时间在 Date2 之后");
 }

 if (date1.before(date2)) {
  System.out.println("Date1 时间在 Date2 之前");
 }

 if (date1.equals(date2)) {
  System.out.println("Date1 时间与 Date2 相等");
 }
}

输出结果

date1 : 2009-12-31
date2 : 2019-01-31
Date1 时间在 Date2 之前

3. Calender.before(),Calender.after()和Calender.equals()

使用java.util.Calendar比较两个Date日期

@Test
void testDateCompare3() throws ParseException {
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 Date date1 = sdf.parse("2009-12-31");
 Date date2 = sdf.parse("2019-01-31");

 System.out.println("date1 : " + sdf.format(date1));
 System.out.println("date2 : " + sdf.format(date2));

 Calendar cal1 = Calendar.getInstance();
 Calendar cal2 = Calendar.getInstance();
 cal1.setTime(date1);
 cal2.setTime(date2);

 if (cal1.after(cal2)) {
  System.out.println("Date1 时间在 Date2 之后");
 }

 if (cal1.before(cal2)) {
  System.out.println("Date1 时间在 Date2 之前");
 }

 if (cal1.equals(cal2)) {
  System.out.println("Date1 时间与 Date2 相等");
 }
}

输出结果:

date1 : 2009-12-31
date2 : 2019-01-31
Date1 时间在 Date2 之前

4. Java 8日期比较方法

在Java 8中,可以使用新的isBefore(),isAfter(),isEqual()和compareTo()来比较LocalDate,LocalTime和LocalDateTime。以下示例以比较两个java.time.LocalDate

@Test
void testDateCompare4() throws ParseException {
 DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 LocalDate date1 = LocalDate.of(2009, 12, 31);
 LocalDate date2 = LocalDate.of(2019, 1, 31);

 System.out.println("date1 : " + sdf.format(date1));
 System.out.println("date2 : " + sdf.format(date2));

 System.out.println("Is...");
 if (date1.isAfter(date2)) {
  System.out.println("Date1 时间在 Date2 之后");
 }

 if (date1.isBefore(date2)) {
  System.out.println("Date1 时间在 Date2 之前");
 }

 if (date1.isEqual(date2)) {
  System.out.println("Date1 时间与 Date2 相等");
 }
}

输出结果

date1 : 2009-12-31
date2 : 2019-01-31
Is...
Date1 时间在 Date2 之前

到此这篇关于详解在java中进行日期时间比较的4种方法的文章就介绍到这了,更多相关java 日期时间比较内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

更多精彩内容其他人还在看

Java基于反射机制实现全部注解获取的方法示例

这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 信号量Semaphore的实现

这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

eclipse+maven+spring mvc项目基本搭建过程

这篇文章主要介绍了eclipse+maven+spring mvc项目基本搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring boot集成swagger2生成接口文档的全过程

这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java冒泡排序法和选择排序法的实现

这篇文章主要介绍了Java冒泡排序法和选择排序法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Cloud Alibaba教程之Sentinel的使用

这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Josephus环的四种解法(约瑟夫环)基于java详解

这篇文章主要介绍了Josephus环的四种解法(约瑟夫环)基于java详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java继承Thread类创建线程类示例

这篇文章主要介绍了Java继承Thread类创建线程类,结合实例形式分析了java线程操作相关使用技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java使用Callable和Future创建线程操作示例

这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

springBoot使用JdbcTemplate代码实例

这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多