Java中计算两个日期的相差时间

日常开发中,经常会存在这么一个场景,给定两个时间,计算两者相差多少天、小时、分钟或秒。

过去大家一般通过 Date 的 getTime 方法获取日期所代表的毫秒数后,除以指定单位代表的毫秒数进行计算。

下面为常规实现方法:

执行结果如下:

当然,以上方式不能说有问题,只能说不够简洁,因此可对其进行优化,下面为优化后的代码,当然,只贴出 diff 方法的代码:

执行结果如下:

当然,如果日期类型为 Date,以上已经算是最优实现方式了。但偶尔会实用 Java8新加入的日期类型 LocalDateTime 来表示时间。此时又该如何计算两者相差时间呢?当然,可以写一个转换方法,将 LocalDateTime 转换为 Date 后调用diff 方法。下面为对应的实现

执行结果如下:

实际上,使用 Java8 提供的日期API 本就能完成该功能,将其转为 Date 后进行运算则有点多此一举,且用 Java8 的日期 API 实现也同样简洁,下面为对应实现:

执行后结果如下:

由此常见的计算两个日期相差时间的工具类便诞生,下面为最终的代码:

相关推荐
武子康36 分钟前
大数据-189 Nginx JSON 日志接入 ELK:ZK+Kafka+Elasticsearch 7.3.0+Kibana 实战搭建
大数据·后端·elasticsearch
断春风1 小时前
订单超时自动取消系统架构解析
后端·系统架构
Angletank1 小时前
SpringBoot中ORM组件通过JAP组件的使用
spring boot·后端·orm·jpa
moxiaoran57531 小时前
Go语言的map
开发语言·后端·golang
小信啊啊1 小时前
Go语言数组
开发语言·后端·golang
白宇横流学长1 小时前
基于SpringBoot实现的零食销售商城设计与实现【源码+文档】
java·spring boot·后端
superman超哥1 小时前
仓颉语言中异常捕获机制的深度剖析与工程实践
c语言·开发语言·后端·python·仓颉
驱动探索者1 小时前
[缩略语大全]之[INTEL]篇
java·后端·spring·intel
Victor3561 小时前
Netty(21)Netty的SSL/TLS支持是如何实现的?
后端
IT_陈寒1 小时前
Java21新特性实战:5个杀手级改进让你的开发效率提升40%
前端·人工智能·后端