首页 >Java >java教程 >如何准确计算两个 Java 8 LocalDateTime 实例之间的时间差?

如何准确计算两个 Java 8 LocalDateTime 实例之间的时间差?

Linda Hamilton
Linda Hamilton原创
2024-12-06 05:28:14518浏览

How to Accurately Calculate Time Differences Between Two Java 8 LocalDateTime Instances?

Java 8:确定两个 LocalDateTime 实例之间的时差

在 Java 8 中,LocalDateTime 类表示没有时区的日期和时间。要计算两个 LocalDateTime 实例之间的差异,可以使用 period 和 Duration 类。但是,您的代码在月份值之后产生了错误的结果。

原始实现中的代码不正确:

问题出在 getTime() 方法中,特别是在小时、分钟和秒的计算:

Duration duration = Duration.between(today, now);

long seconds = duration.getSeconds();

long hours = seconds / SECONDS_PER_HOUR;
long minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE);
long secs = (seconds % SECONDS_PER_MINUTE);

这种方法是不正确的,因为它假设持续时间始终为正。当 fromDateTime 大于 toDateTime 时,它​​无法处理遇到的负值。

使用 ChronoUnit 的替代方法:

准确计算 LocalDateTime 实例之间的差异,包括负值的情况值,最好使用 ChronoUnit enum:

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

ChronoUnit 提供了计算各种时间单位(例如年、月、日、时、分、秒)差异的方法。它可以正确处理正值和负值。

通过利用 ChronoUnit,您的代码将为所有场景提供准确的结果。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn