Java:计算两个 LocalDateTime 对象之间的夜晚数

发布时间:2021-03-08 13:29

我正在尝试编写一个函数来计算 Java 中两个 LocalDateTime 对象之间的夜数。

这是我目前想到的(使用 java.time.LocalDateTime):

    //Test LocalDateTime objects
    LocalDateTime start = LocalDateTime.now().minusDays(5).plusHours(3);
    LocalDateTime end = LocalDateTime.now();

    long days = Duration.between(start, end).toDays();
    int nightCount = (int) days;
    if (end.toLocalTime().isBefore(start.toLocalTime())) {
        ++nightCount;
    }

这似乎可以完成工作,但我知道 DateTime 会导致与时区、夏令时等相关的各种问题。

谁能提出更好的函数?

回答1

你可以完全忽略时间部分,使用ChronoUnit.DAYS.between

int nights = ChronoUnit.DAYS.between(start.toLocalDate(), end.toLocalDate());

这是可行的,因为通过 toLocalDate,您只考虑本地日期时间的 date 部分。