我如何检查一段时间(由两个时间时间值(开始和结束)组成)是否经过例如午夜?
我试图使用LocalDateTime类,但似乎找不到任何有用的东西..
答案 0 :(得分:0)
这是我能想到的最好的:
public static boolean passesTime(LocalDateTime start,
LocalDateTime end,
LocalTime time) {
// If the duration is more than a day, any time will be passed.
if (Duration.between(start, end).toDays() >= 1)
return true;
// Otherwise, the time has to be passed on the start day...
LocalDateTime timeOnStartDay = LocalDateTime.of(start.toLocalDate(), time);
if (timeOnStartDay.isAfter(start) && timeOnStartDay.isBefore(end))
return true;
// or on the end day.
LocalDateTime timeOnEndDay = LocalDateTime.of(end.toLocalDate(), time);
if (timeOnEndDay.isAfter(start) && timeOnEndDay.isBefore(end))
return true;
return false;
}
使用java.time
API进行测试。如果您使用Joda时间,代码应该相似(如果不相同)。