详解在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,日期时间
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java监听器ActionListener与MouseListener的执行顺序说明
2022-02-04 20:08:23
![](https://img.aspxhome.com/file/2023/9/72629_0s.png)
浅谈Java安全之C3P0链利用与分析
2022-05-23 20:31:17
![](https://img.aspxhome.com/file/2023/0/95950_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/2/94302_0s.png)
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
![](https://img.aspxhome.com/file/2023/2/83502_0s.png)
C#生成带logo的二维码
2021-11-03 17:38:41
![](https://img.aspxhome.com/file/2023/0/79090_0s.png)
用C#做网络爬虫的步骤教学
2023-12-24 10:31:52
![](https://img.aspxhome.com/file/2023/1/72471_0s.png)
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
![](https://img.aspxhome.com/file/2023/6/58866_0s.jpg)
利用Java简单实现一个代码行数统计器方法实例
2023-01-12 10:50:25
![](https://img.aspxhome.com/file/2023/0/79860_0s.png)
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
![](https://img.aspxhome.com/file/2023/5/58215_0s.png)