Java 计算两个时间差的方法总结

一只小鹿
一只小鹿
发布时间:2026-10-14| 5人浏览过
原创

在 Java 开发中,处理日期和时间差异是常见需求。通过获取当前时间与目标时间的毫秒差,可以准确计算出相距的天数、小时、分钟及秒数。

使用 Date 和 SimpleDateFormat 计算时间差

以下是计算两个日期之间差值的三种典型实现方式。假设我们需要计算从 2004-01-02 11:30:24 到 2004-03-26 13:31:40 的时间差。

第1步:仅计算总天数(基础方法)

该方法直接计算两个 Date 对象的时间戳差值,并将其转换为天数。适用于只需知道相差多少天的场景。

Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2004-03-26 13:31:40");
Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2004-01-02 11:30:24");
long diff = date1.getTime() - date2.getTime();
long days = diff / (1000 * 60 * 60 * 24); // 1000毫秒=1秒

第2步:计算精确到秒的完整时间差

这种方法利用取余 (%) 运算,将总毫秒数逐步拆解为天、小时、分钟和秒,适合需要输出详细格式的场景。

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = df.parse("2004-03-26 13:31:40");
Date date = df.parse("2004-01-02 11:30:24");

long l = now.getTime() - date.getTime();
long day = l / (24 * 60 * 60 * 1000);
long hour = (l / (60 * 60 * 1000) - day * 24);
long minute = (l / (60 * 1000) - day * 24 * 60 - hour * 60);
long second = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60);

System.out.println(day + "天" + hour + "小时" + minute + "分" + second + "秒");

第3步:基于秒级转换的算法

先将总差值统一转换为秒数,再通过除法和取余进行单位换算,逻辑较为直观。

SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date begin = dfs.parse("2004-01-02 11:30:24");
java.util.Date end = dfs.parse("2004-03-26 13:31:40");

// 转为秒
long between = (end.getTime() - begin.getTime()) / 1000;

long day1 = between / (24 * 3600);
long hour1 = between % (24 * 3600) / 3600;
long minute1 = between % 3600 / 60;
long second1 = between % 60;

System.out.println(day1 + "天" + hour1 + "小时" + minute1 + "分" + second1 + "秒");

注意事项

  • 上述代码使用 java.util.Date,在处理现代 Java 项目时,建议考虑使用 java.time 包下的新 API(如 Period 或 Duration)以获得更好的性能和线程安全性。
  • 日期解析时请务必检查 ParseException 异常。

以上就是Java中计算时间差的详细内容,更多关于Java日期处理的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。