如何在 Java 中计算两个日期之间的差值?

10 Sept 2024 | 5 分钟阅读

挑战在于使用 Java 语言确定两个日期之间的差值。

给定两个日期,开始日期和结束日期,时间以字符串形式表示。

示例 1

输入以下日期

开始日期 = 10/01/2018 01:10:20,

结束日期 = 10/06/2020 06:30:50。

输出:2,152 天,5,20,30 秒,或 5,20 小时。

示例 2

输入以下日期

开始日期和结束日期:2019 年 10 月 1 日和 2020 年 6 月 6 日

结果:152 天,5 小时,0 分钟,0 秒。

使用 Java SimpleDateFormat 类

要比较两个日期,请使用 SimpleDateFormat 和 Date 类。步骤如下:

  1. 通过创建 SimpleDateFormat 类的实例,将字符串格式转换为日期对象。
  2. 要创建日期,请使用 simpleDateFormat 类的 parse() 方法从字符串中提取开始日期和结束日期。
  3. 使用 Java 方法 getTime(),如 d2.getTime() - d1.getTime,以毫秒为单位确定两个日期之间的时间差()。
  4. 使用日期-时间数学公式确定两个日期之间的差异。返回两个指定日期之间经过的年、日、时、分和秒。
  5. 打印最终结果。

上述策略的实现如下:

文件名:TimeDiff1.java

输出

The difference between the two dates is: -2 years, -152 days, -5 hours, -20 minutes, -30 seconds

使用 Java TimeUnit 类

通过使用 Java 内置的 TimeUnit 类,我们可以更精确地确定两个日期之间的差值。上述方法的实现如下:

文件名:TimeDiff2.java

输出

The difference between the two dates is: 2 years, 151 days, 4 hours, 20 minutes, 30 seconds

使用 Java Period 类

Java 的 Period 类可用于计算两个日期之间的差值。可以使用 Period.between() 方法确定两个日期之间的月份、天数和年数差。上述策略的实现如下:

文件名:TimeDiff3.java

输出

The difference between the two dates is: 3 years, 5 months, and 0 days