首页 > Java > java教程 > Java 8 如何准确计算两个 LocalDateTime 实例之间的年、月、日、小时和分钟差异?

Java 8 如何准确计算两个 LocalDateTime 实例之间的年、月、日、小时和分钟差异?

Mary-Kate Olsen
发布: 2024-12-15 12:46:12
原创
159 人浏览过

How Can Java 8 Accurately Calculate the Difference Between Two LocalDateTime Instances in Years, Months, Days, Hours, and Minutes?

Java 8:计算多个单位中两个 LocalDateTime 实例之间的差异

计算不同时间单位中两个 LocalDateTime 实例之间的差异可以呈现挑战。一种方法是利用 Java 8 中引入的 period 和 Duration 类。

初始实现的挑战

提供的代码尝试通过组合 period (它处理年、月和日)和持续时间(它管理小时、分钟和秒)。但是,计算中存在一些不一致之处:

  • getTime 方法错误地计算了几个月后的时间差。
  • 针对某些日期时间对报告的负时间值表明存在问题处理负差异。

改进计算

为了确保计算准确,请考虑使用 ChronoUnit 枚举,它提供了从日期和时间中提取特定时间单位的方法。这是一个改进版本:

import java.time.ChronoUnit;
import java.time.LocalDateTime;
import java.time.Period;

public class CalculateLocalDateTimeDifference {

    public static void main(String[] args) {
        LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 9, 19, 46, 45);
        LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55);

        Period period = Period.between(fromDateTime.toLocalDate(), toDateTime.toLocalDate());
        long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
        long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);

        System.out.println(period.getYears() + " years " +
                period.getMonths() + " months " +
                period.getDays() + " days " +
                hours + " hours " +
                minutes + " minutes.");
    }
}
登录后复制

说明

  • Period. Between 计算到指定时间点的年、月、日差异.
  • ChronoUnit.MINUTES. Between 提取两者之间的时间差(以分钟为单位) LocalDateTime 实例。
  • 同样,ChronoUnit.HOURS. Between 获取小时差。

此增强算法可提供正时差和负时差的准确结果。

以上是Java 8 如何准确计算两个 LocalDateTime 实例之间的年、月、日、小时和分钟差异?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板