java中如何进行日期时间比较?4种方法介绍

2023-10-26

1. Date.compareto()

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

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

2、如果Date在date参数之后,则返回值大于0。

3、如果Date在date参数之前,则返回值小于0。

 
  1. @TestvoID testDateCompare() throws ParseException {
  2. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  3. Date date1 = sdf.parse("2009-12-31");
  4. Date date2 = sdf.parse("2019-01-31");
  5. System.out.println("date1 : " + sdf.format(date1));
  6. System.out.println("date2 : " + sdf.format(date2)); if (date1.compareto(date2) > 0) {
  7. System.out.println("Date1 时间在 Date2 之后");
  8. } else if (date1.compareto(date2) < 0) {
  9. System.out.println("Date1 时间在 Date2 之前");
  10. } else if (date1.compareto(date2) == 0) {
  11. System.out.println("Date1 时间与 Date2 相等");
  12. } else {
  13. System.out.println("程序怎么会运行到这里?正常应该不会");
  14. }
  15. }

输出结果:

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

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

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

 
  1. @TestvoID testDateCompare2() throws ParseException {
  2. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  3. Date date1 = sdf.parse("2009-12-31");
  4. Date date2 = sdf.parse("2019-01-31");
  5. System.out.println("date1 : " + sdf.format(date1));
  6. System.out.println("date2 : " + sdf.format(date2)); if (date1.after(date2)) {
  7. System.out.println("Date1 时间在 Date2 之后");
  8. } if (date1.before(date2)) {
  9. System.out.println("Date1 时间在 Date2 之前");
  10. } if (date1.equals(date2)) {
  11. System.out.println("Date1 时间与 Date2 相等");
  12. }
  13. }

输出结果

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

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

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

 
  1. @TestvoID testDateCompare3() throws ParseException {
  2. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  3. Date date1 = sdf.parse("2009-12-31");
  4. Date date2 = sdf.parse("2019-01-31");
  5. System.out.println("date1 : " + sdf.format(date1));
  6. System.out.println("date2 : " + sdf.format(date2));
  7. Calendar cal1 = Calendar.getInstance();
  8. Calendar cal2 = Calendar.getInstance();
  9. cal1.setTime(date1);
  10. cal2.setTime(date2); if (cal1.after(cal2)) {
  11. System.out.println("Date1 时间在 Date2 之后");
  12. } if (cal1.before(cal2)) {
  13. System.out.println("Date1 时间在 Date2 之前");
  14. } if (cal1.equals(cal2)) {
  15. System.out.println("Date1 时间与 Date2 相等");
  16. }
  17. }

输出结果:

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

4. Java 8日期比较方法

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

 
  1. @TestvoID testDateCompare4() throws ParseException {
  2. DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  3. LocalDate date1 = LocalDate.of(2009, 12, 31);
  4. LocalDate date2 = LocalDate.of(2019, 1, 31);
  5. System.out.println("date1 : " + sdf.format(date1));
  6. System.out.println("date2 : " + sdf.format(date2));
  7. System.out.println("Is..."); if (date1.isAfter(date2)) {
  8. System.out.println("Date1 时间在 Date2 之后");
  9. } if (date1.isBefore(date2)) {
  10. System.out.println("Date1 时间在 Date2 之前");
  11. } if (date1.isEqual(date2)) {
  12. System.out.println("Date1 时间与 Date2 相等");
  13. }
  14. }

输出结果

 
  1. date1 : 2009-12-31date2 : 2019-01-31Is...Date1 时间在 Date2 之前
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中如何进行日期时间比较?4种方法介绍 的相关文章

随机推荐

  • 刷脸支付通过人脸识别就可以完成付款

    发展个人码质优价廉所以说 刷脸支付是建立在长达几年的技术积累和市场认可的基础上建立起来的产品 并非是一蹴而就的 刷脸支付的到来 让我们的支付交易手段迈入一个新的阶梯 也可以说是进入了支付的时代 刷脸支付成为新的支付趋势的原因 缓解对外部媒介
  • 最小二乘法

    首先给出公式 最小二乘法的公式 y a x b 其中式中N是数据点的个数 注意 以上两式具有相同的分母 指逐项加法计算 取和 x指对所有的x值求和 y指对所以的y值求和 x 2 指对所有x的平方求和 xy指对所有的积xy进行取和计算 应注意
  • java-es查询

    目录 1 检索ES数据库 2 检索下级数据 3 1 检索多个字段 匹配同一个值 3 2 must 3 3 should 3 3 1 should 一个key多个value 4 java中匹配ES中多个字段查询 为什么加上 keyword反而
  • iis多进程下的全局变量_全局变量初始化顺序探究

    缘起 上一篇文章 调试实战 dll 加载失败之全局变量初始化篇 中 跟大家分享了一个由于全局变量初始化顺序导致的 dll 加载失败的例子 感兴趣的小伙伴儿可以点击阅读 虽然我们知道了是由于全局变量初始化顺序导致的问题 也给出了解决方案 但是
  • 【HarmonyOS】【FAQ】HarmonyOS应用开发相关问题解答(四)

    贴接上回 往期FAQ参考 HarmonyOS FAQ HarmonyOS应用开发相关问题解答 一 HarmonyOS FAQ HarmonyOS应用开发相关问题解答 二 HarmonyOS FAQ HarmonyOS应用开发相关问题解答 三
  • 穷举法解锁华为手机bootloader

    理论 理论一次解锁0 025s 穷举要9999999999999999 0 025 60 60 24 365 190258751年 建议大家还是用dc unlocker解锁 shell 脚本 运气好的可以试试 bin bash gt unl
  • 10_react页面跳转方式

    一 声明式导航 react router 6 之前 match
  • 【PCIe】1: PCIe 硬件时序初始化过程

    目录 1 前言 2 PCIe理论带宽 3 PCIe连接器引脚定义 4 关键信号描述 4 1 PERST 4 2 REFCLK 和REFCLK 信号
  • Java运行时动态加载类之ClassLoader加载class及其依赖jar包

    需求场景是 通过ClassLoader动态加载外部class文件 class文件又依赖某个具体jar包 需要动态加载jar包 采用URLClassLoader 1 xml配置文件
  • 封装v-loading全局自定义指令

    当我们刷新页面或者是首次加载的时候 如果后端数据请求比较慢的情况下 页面是会出现白屏情况的 所以我们可以使用 v loading 去优化一下 增加用户的体验性 我们可以有两种方式去实现 1 定义一个 loading 的组件 然后在每一个需要
  • Python---自动生成二维码

    专栏 python 个人主页 HaiFan 专栏简介 本专栏主要更新一些python的基础知识 也会实现一些小游戏和通讯录 学时管理系统之类的 有兴趣的朋友可以关注一下 自动生成二维码 二维码的本质上 就是一段字符串 我们可以把任意的字符串
  • 一位大三学生(准大四)面试网络工程师后的一些想法

    首先声明 这是我面试一家公司的网络工程师后想要表达的一些东西 早就面试完了 但是一直现在才发 以上均为个人想法 本科大学就不说名字了吧 非211 985 是省重点建设高校 省内知名 省外无名 本人专业通信 但是对这个专业无感 所以投身于了网
  • 成为一名黑客(网络安全),需要掌握哪些黑客技能?

    前言 黑客技能是一项非常复杂和专业的技能 需要广泛的计算机知识和网络安全知识 你可以参考下面一些学习步骤 系统自学网络安全 在学习之前 要给自己定一个目标或者思考一下要达到一个什么样的水平 是学完找工作 进大厂 还是兴趣学习提升 成为一个黑
  • Etcd恢复报错:error listing data dir: /var/lib/etcd/default.etcd

    通过systemd托管的etcd数据备份还原无法启动服务并且报错 error listing data dir var lib etcd default etcd 但是单独执行启动命令可以 usr bin etcd debug name d
  • 各种数据结构的时间复杂度分析

    对于同一个数据结构来说 底层实现的不同往往会呈现出不同的时间复杂度 以数组为例 普通数组实现 顺序数组实现 二分搜索树 平衡 插入 O 1 O n O logn 查找 O n O logn O logn 删除 O n O n O logn
  • 青龙面板及使用(拔毛助长)

    提示 码文不易 来源 学习日常 前言 简单说一下这个原理吧 就是把写好的脚本挂在面板上 让他定时运行 得有个服务器 我用的是腾讯的 搭建的问题 直接搜吧 我就不在过多说些什么了 最好有俩种设备 安卓 苹果 知识储备的话 懂点python j
  • c语言中空格算空行吗,1、程序中空格与空行使用规范

    在程序代码中 善用空格与空行 可使程序板式更加优美 空格 使用 1 在C语言的关键字 像if for while switch等 之后要留有空格 以突显出该关键字 在函数之后不要留空格 紧跟左括号 以与关键字作区别 但在函数定义的参数之间
  • NAT技术详解

    前言 我们知道现在流行的IPv4的IP地址是32位的 那说明IP地址总数是2 32次方个 但是随着互联网的发展 现在的入网设备早就超过了2 32次方个了 拿为什么我们现在的主机IP还够用呢 这里用到了NAT技术来解决 一 NAT技术概念 在
  • 如何阅读他人的程序代码(上)——技巧学习篇

    一 读懂程序代码 使心法皆为我所用 程序代码是别人写的 只有原作者才真的了解程序代码的用途及涵义 许多程序人心里都有一种不自觉的恐惧感 深怕被迫去碰触其他人所写的程序代码 但是 与其抗拒接收别人的程序代码 不如彻底了解相关的语言和惯例 当成
  • java中如何进行日期时间比较?4种方法介绍

    1 Date compareto java util Date提供了在Java中比较两个日期的经典方法compareto 1 如果两个日期相等 则返回值为0 2 如果Date在date参数之后 则返回值大于0 3 如果Date在date参数