我正在尝试编写一个函数来计算 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 会导致与时区、夏令时等相关的各种问题。
谁能提出更好的函数?
你可以完全忽略时间部分,使用ChronoUnit.DAYS.between
:
int nights = ChronoUnit.DAYS.between(start.toLocalDate(), end.toLocalDate());
这是可行的,因为通过 toLocalDate
,您只考虑本地日期时间的 date 部分。