java如何计算两个日期之间的差距

java如何计算两个日期之间的差距

作者:Joshua Lee发布时间:2026-02-04阅读时长:0 分钟阅读次数:2

用户关注问题

Q
怎样用Java计算两个日期之间相差的天数?

我想知道如何在Java中获取两个日期之间相差的天数,有没有简单的方法实现?

A

使用Java计算日期差距(天数)

可以利用Java 8引入的java.time包中的LocalDate类,通过调用ChronoUnit.DAYS.between()方法来计算两个日期之间的天数差。例如:

LocalDate start = LocalDate.of(2023, 1, 1);
LocalDate end = LocalDate.of(2023, 1, 10);
long daysBetween = ChronoUnit.DAYS.between(start, end);

这样daysBetween变量就表示两个日期之间的天数差。

Q
Java能否计算两个日期之间相差的小时或分钟数?

除了天数外,Java有没有办法计算两个日期或时间点之间相差的小时或者分钟数?

A

使用Java计算日期时间差(小时和分钟)

可以使用Java 8及以上版本的java.time包中的LocalDateTime类。结合Duration类,可以计算两个日期时间对象之间的小时数或分钟数。例如:

LocalDateTime start = LocalDateTime.of(2023, 1, 1, 10, 0);
LocalDateTime end = LocalDateTime.of(2023, 1, 1, 15, 30);
Duration duration = Duration.between(start, end);
long hours = duration.toHours();
long minutes = duration.toMinutes();

这样就能得到两个时间点的差值,单位为小时或分钟。

Q
老版本Java中如何计算两个日期的差距?

如果项目使用的是Java 7或更早版本,不能使用java.time包,怎么实现日期差距的计算?

A

Java 7及以下版本计算日期差距的方法

在老版本Java中,可以使用java.util.Date和java.util.Calendar类获取日期的时间戳(以毫秒为单位),然后通过计算两个时间戳之差得到时间间隔。示例如下:

Date startDate = sdf.parse("2023-01-01");
Date endDate = sdf.parse("2023-01-10");
long diffInMillies = endDate.getTime() - startDate.getTime();
long diffDays = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);

这样可以得到两个日期之间相差的天数。