在 Java 中有多种方法可以比较日期,日期在计算机内部表示为(long型)时间点——自1970年1月1日以来经过的毫秒数。在Java中,Date是一个对象,包含多个用于比较的方法,任何比较两个日期的方法本质上都会比较日期的时间。

本文主要介绍以下五种方式:

使用 Date.compareTo()

使用 Date.before()、Date.after() 和 Date.equals()

使用 Calender.before()、Calender.after() 和 Calender.equals()

使用 getTime()

使用 Java 8 的 isBefore()、isAfter()、isEqual() 和 compareTo()

Date.compareTo()

Date 实现了 Comparable,因此两个日期可以直接用 compareTo 方法进行比较。

如果两个日期相等,则返回值为0。

如果 Date1 在 Date2 参数之后,则返回值大于0。

如果 Date1 在 Date2 参数之前,则返回值小于0。

package com.wupx.date;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateDemo {

public static void main(String[] args) throws ParseException {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date date1 = sdf.parse("2019-10-01");

Date date2 = sdf.parse("2019-10-17");

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

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

if (date1.compareTo(date2) > 0) {

System.out.println("Date1 is after Date2");

} else if (date1.compareTo(date2) < 0) {

System.out.println("Date1 is before Date2");

} else if (date1.compareTo(date2) == 0) {

System.out.println("Date1 is equal to Date2");

} else {

System.out.println("咋到这的?");

}

}

}

输出结果

date1 : 2019-10-01

date2 : 2019-10-17

Date1 is before Date2

Date.before() Date.after() Date.equals()

可以用 equals、after 和 before 方法比较日期。

如果两个日期在同一时间点,equals方法将返回true。

如果 date1 在 date2 之前,before 返回 true,否则返回 false。

如果 date2 在 date1 之后,after 返回 true,否则返回 false。

package com.wupx.date;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateDemo2 {

public static void main(String[] args) throws ParseException {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date date1 = sdf.parse("2019-10-01");

Date date2 = sdf.parse("2019-10-17");

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

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

if (date1.after(date2)) {

System.out.println("Date1 is after Date2");

}

if (date1.before(date2)) {

System.out.println("Date1 is before Date2");

}

if (date1.equals(date2)) {

System.out.println("Date1 is equal Date2");

}

}

}

输出结果

date1 : 2019-10-01

date2 : 2019-10-17

Date1 is before Date2

Calender.before() Calender.after() Calender.equals()

Calendar 类也有 compareTo、equals、after 和 before 方法,工作方式与上面描述的 Date 类的方法相同。因此,如果日期信息保存在 Calendar 类中,则不需要提取日期来执行比较。

package com.wupx.date;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class DateDemo3 {

public static void main(String[] args) throws ParseException {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date date1 = sdf.parse("2009-12-31");

Date date2 = sdf.parse("2010-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 is after Date2");

}

if (cal1.before(cal2)) {

System.out.println("Date1 is before Date2");

}

if (cal1.equals(cal2)) {

System.out.println("Date1 is equal Date2");

}

}

}

输出结果

date1 : 2019-10-01

date2 : 2019-10-17

Date1 is before Date2

getTime()

可以直接比较两个日期的时间点。这是对两种原始数据类型的比较,因此可以使用 < 、 > 和 == 来比较。

在比较日期之前,必须使用前面创建的 Date 对象中的数据来创建长整型。

package com.wupx.date;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateDemo4 {

public static void main(String[] args) throws ParseException {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Date date1 = sdf.parse("2019-10-01");

Date date2 = sdf.parse("2019-10-17");

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

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

long time1 = date1.getTime();

long time2 = date2.getTime();

if (time1 > time2) {

System.out.println("Date1 is after Date2");

} else if (time1 < time2) {

System.out.println("Date1 is before Date2");

} else if (time1 == time2) {

System.out.println("Date1 is equal to Date2");

} else {

System.out.println("咋到这的?");

}

}

}

输出结果

date1 : 2019-10-01

date2 : 2019-10-17

Date1 is before Date2

Java 8 中的 isBefore() isAfter() isEqual() compareTo()

在 Java 8 中,可以使用新的 isBefore()、isAfter()、isEqual() 以及 compareTo() 来比较 LocalDate、LocalTime 和 LocalDateTime。

package com.wupx.date;

import java.time.LocalDate;

import java.time.format.DateTimeFormatter;

public class DateDemo5 {

public static void main(String[] args) {

DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd");

LocalDate date1 = LocalDate.of(2019, 10, 01);

LocalDate date2 = LocalDate.of(2019, 10, 17);

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 is after Date2");

}

if (date1.isBefore(date2)) {

System.out.println("Date1 is before Date2");

}

if (date1.isEqual(date2)) {

System.out.println("Date1 is equal Date2");

}

System.out.println("CompareTo...");

if (date1.compareTo(date2) > 0) {

System.out.println("Date1 is after Date2");

} else if (date1.compareTo(date2) < 0) {

System.out.println("Date1 is before Date2");

} else if (date1.compareTo(date2) == 0) {

System.out.println("Date1 is equal to Date2");

} else {

System.out.println("咋到这的?");

}

}

}

输出结果

date1 : 2019-10-01

date2 : 2019-10-17

Is...

Date1 is before Date2

CompareTo...

Date1 is before Date2

总结

本文主要讲解了在 Java 中比较日期的几种常用方法,可以自己实际操作一下。

java 日期对比_在 Java 中如何比较日期?相关推荐

  1. java List最大_在java中获取List集合中最大的日期时间操作

    取list集合中最大的日期, 可以用date max = collections.max(datelist);, 传入一个日期集合, 就可以获取, 工作中有这个需求, 就查找到这个, 代码如下 } e ...

  2. java 剔除节假日_使用java 排除 两个日期段中的 休息日和节假日 。在线等待中十万火急,求大牛帮忙,多谢了。。。。...

    展开全部 时间处理,更方便和更易读的代码角度讲e68a8462616964757a686964616f31333361326236,肯定要用Java8的新date api啦,由于涉及到一系列日期,所以 ...

  3. Java应用编程_常用类库汇总2(日期类正则表达式国际化程序)

    总览[Java SE] 相关文章链接 [Java应用编程_常用类库汇总1(字符串处理类&&对象克隆&数字操作类库&-)] [Java应用编程_常用类库汇总3(开发支持类 ...

  4. java coin介绍_代码示例中的Java 7:Project Coin

    java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...

  5. java skip函数_【Java必修课】图说Stream中的skip()和limit()方法及组合使用

    1 简介 本文将讲解Java 8 Stream中的两个方法:skip()和limit().这两个方法是Stream很常用的,不仅各自会被高频使用,还可以组合出现,并能实现一些小功能,如subList和 ...

  6. java方法重载_在Python中该如何实现Java的重写与重载

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:清风python PS:如有需要Python学习资料的小伙伴可以加点击 ...

  7. java 月份缩写_关于java:如何将日期字符串解析为Date?

    本问题已经有最佳答案,请猛点这里访问. 如何将下面的日期字符串解析为Date对象? String target ="Thu Sep 28 20:29:30 JST 2000"; D ...

  8. java 函数 微秒_在Java中以微秒为单位解析时间

    我在解析2013-01-09 09:15:03.000000格式的Java时间字符串时遇到问题. 在我的数据中,最后三个数字始终为0(表示输入字符串仅具有毫秒精度),因此我将此格式传递给SimpleD ...

  9. java final 类_在Java中,final修饰的类有什么特点

    展开全部 关于Java中的32313133353236313431303231363533e4b893e5b19e31333264663736final(2010-09-09 14:19:48)转载▼ ...

  10. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创

    由于项目中用到了Applet与Servlet之间(客户端用Applet.Server端用Servlet)的通信,要求: 1:>客户端与服务端必须出Log. 2:>浏览器在加载Applet时 ...

最新文章

  1. HR与HRBP的区别
  2. 周志华教授发表首届国际学习与推理联合大会IJCLR开场Keynote:探索从纯学习到学习+推理的AI...
  3. hub-spock-ospf,nbma
  4. wdatepicker设置初始时间_滑动条的滑块的初始位置应该放在哪儿?
  5. 检查列表中是否存在值的最快方法
  6. Validation-jQuery表单验证插件使用方法
  7. 下面可提供安全电子邮件服务的是()【最全!最详细解析!!】
  8. 无人驾驶出租车遭警察拦截后欲“潜逃”,AI 是原罪?
  9. java 远程调试spark_spark开启远程调试
  10. 识别手指pos 20个
  11. 如何写出整洁规范的R代码?是时候讨论一下代码规范性了
  12. replace vfp_VFP字符串替换函数CHRTRAN()使用方法
  13. c语言头文件malloc.h,#includemalloc.h,sys/types.h ,stdlib.h,string.h及C语言头文件
  14. LABVIEW详细介绍:LABVIEW是什么软件?都可以干什么?
  15. linux-通过BCM2835芯片手册进行IO操控的代码编程
  16. 苹果ipadmini1 主板 电路图 超清
  17. 数学建模常用模型22:回归模型
  18. 【转载】任正非:鼓足干劲,力争上游,不畏一切艰难困苦
  19. python单位根检验平稳性怎么看是否平稳_Python ADF 单位根检验 如何查看结果的实现...
  20. c语言关键字大全(32个)

热门文章

  1. 2020大风口!什么是图神经网络?有什么用?终于有人讲明白了
  2. Win10桌面我的电脑等图标设置
  3. 微信小程序开发08 CICD:打造小程序的工程交付体系
  4. 五一出行必备的蓝牙耳机推荐,续航高舒适度好的蓝牙耳机推荐
  5. 【学习笔记】Tokyo Tyrant与Redis的一些简单比较
  6. 在手机上运行Symbian 应用程序(创建SIS 和安装应用程序)
  7. ESET Nod32 病毒库更新失败,提示无法链接到更新服务器
  8. python爬取世界大学排行榜
  9. python之互联网数据采集_基于Python的互联网金融数据采集
  10. 【华为机试真题 Python实现】元音字母请大写