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

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

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

下面为常规实现方法:

执行结果如下:

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

执行结果如下:

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

执行结果如下:

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

执行后结果如下:

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

相关推荐
一 乐9 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
码事漫谈10 小时前
Protocol Buffers 编码原理深度解析
后端
码事漫谈10 小时前
gRPC源码剖析:高性能RPC的实现原理与工程实践
后端
踏浪无痕12 小时前
AI 时代架构师如何有效成长?
人工智能·后端·架构
程序员小假12 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
武子康13 小时前
大数据-209 深度理解逻辑回归(Logistic Regression)与梯度下降优化算法
大数据·后端·机器学习
maozexijr14 小时前
Rabbit MQ中@Exchange(durable = “true“) 和 @Queue(durable = “true“) 有什么区别
开发语言·后端·ruby
源码获取_wx:Fegn089514 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
独断万古他化14 小时前
【Spring 核心: IoC&DI】从原理到注解使用、注入方式全攻略
java·后端·spring·java-ee
毕设源码_郑学姐14 小时前
计算机毕业设计springboot基于HTML5的酒店预订管理系统 基于Spring Boot框架的HTML5酒店预订管理平台设计与实现 HTML5与Spring Boot技术驱动的酒店预订管理系统开
spring boot·后端·课程设计