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

作者:字母哥博客 时间:2022-09-03 23:35:52 

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 之前

来源:https://segmentfault.com/a/1190000023376784

标签:java,日期时间
0
投稿

猜你喜欢

  • Java监听器ActionListener与MouseListener的执行顺序说明

    2022-02-04 20:08:23
  • 浅谈Java安全之C3P0链利用与分析

    2022-05-23 20:31:17
  • C#算法函数:获取一个字符串中的最大长度的数字

    2022-12-25 10:20:04
  • SpringCloud @RefreshScope刷新机制浅析

    2022-12-13 11:38:15
  • c# 类型转换

    2021-06-17 06:45:22
  • Spring Security如何实现升级密码加密方式详解

    2023-09-02 08:47:31
  • java 二进制数据与16进制字符串相互转化方法

    2023-04-24 15:57:00
  • 提权函数之RtlAdjustPrivilege()使用说明

    2021-08-27 04:16:49
  • Spring创建bean实例的几种方式分享

    2022-02-21 22:08:19
  • C# winfrom 模拟ftp文件管理实现代码

    2023-07-15 16:29:48
  • 详解Spring Security认证流程

    2022-04-16 15:48:46
  • C#生成带logo的二维码

    2021-11-03 17:38:41
  • 用C#做网络爬虫的步骤教学

    2023-12-24 10:31:52
  • Unity延时执行的多种方法小结

    2022-03-16 10:49:32
  • C#泛型方法在lua中表示的一种设计详解

    2022-08-24 20:03:12
  • JetBrains 产品输入激活码 Key is invalid 完美解决方案

    2023-11-08 08:57:55
  • 利用Java简单实现一个代码行数统计器方法实例

    2023-01-12 10:50:25
  • Java使用openOffice对于word的转换及遇到的问题解决

    2021-12-03 00:01:16
  • spring mvc利用ajax向controller传递对象的方法示例

    2022-10-22 15:06:13
  • Java拷贝数组方法Arrays.copyOf()是地址传递的证明实例

    2023-11-08 11:51:29
  • asp之家 软件编程 m.aspxhome.com