计算 LocalDateTime 对象之间的时间差
为了解决您的问题,计算两个 LocalDateTime 对象之间的时间差需要一种全面的方法,该方法可以准确地表示多个单位的时间跨度。
Java 8 API 提供了 period 和 Duration 类来处理这有效。 period 表示以年、月、日为单位的时间间隔,而 Duration 则处理小时、分钟和秒。
您现有的代码使用 period 和 Duration 来确定时间差,但有一些细微的修改必需的。这是更新后的代码:
import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; import java.time.Period; import java.time.ZoneId; public class Main { static final int MINUTES_PER_HOUR = 60; static final int SECONDS_PER_MINUTE = 60; static final int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR; 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, toDateTime); long seconds = Duration.between(fromDateTime, toDateTime).getSeconds(); long hours = seconds / SECONDS_PER_HOUR; long minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE); long secs = (seconds % SECONDS_PER_MINUTE); System.out.println(period.getYears() + " years " + period.getMonths() + " months " + period.getDays() + " days " + hours + " hours " + minutes + " minutes " + secs + " seconds."); } }
这里的关键更改是使用 Duration. Between(fromDateTime, toDateTime).getSeconds();计算秒差。这可以确保处理跨越午夜或具有负值的时间跨度时的准确性。
当涉及负数时,Duration 会正确处理它们,将时间差提供为负值。此外,使用 ChronoUnit 进行特定单位转换是一种可靠的方法。
以上是Java中如何准确计算两个LocalDateTime对象之间的时间差?的详细内容。更多信息请关注PHP中文网其他相关文章!