Java 8:确定两个 LocalDate 之间的时间差异
计算两个 LocalDateTime 对象之间的差异,以年、月、日、小时表示、分钟和秒可能是一项复杂的任务。一种方法是利用 Java 8 中引入的 period 和 Duration 类。但是,如果差异涉及负值(如代码所示),则可能会导致不正确的结果。
问题
您的代码计算两个日期之间的时间段,代表年、月和日。然后,它计算以秒为单位的时间差,并将这些秒转换为小时、分钟和秒。但是,它没有考虑当“开始”日期大于“结束”日期时可能出现的负值。
解决方案
要解决这个问题,我们可以使用 ChronoUnit 枚举直接确定时间差。 ChronoUnit 提供了一种计算两个 LocalDateTime 对象之间的时间单位(例如分钟和小时)的便捷方法。
以下是使用 ChronoUnit 的更新代码:
import java.time.ChronoUnit; import java.time.LocalDateTime; public class Main { 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); long years = ChronoUnit.YEARS.between(fromDateTime, toDateTime); long months = ChronoUnit.MONTHS.between(fromDateTime, toDateTime); long days = ChronoUnit.DAYS.between(fromDateTime, toDateTime); long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime); long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime); long seconds = ChronoUnit.SECONDS.between(fromDateTime, toDateTime); System.out.println(years + " years " + months + " months " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds."); } }
经过此修改,您的代码应该准确计算两个 LocalDateTime 对象之间的时间差。
以上是Java 8 如何准确计算两个 LocalDate 之间的时间差异并处理负值?的详细内容。更多信息请关注PHP中文网其他相关文章!