如何检查某段时间是否超过了确切的时间戳?

时间:2014-11-04 10:45:38

标签: java

我如何检查一段时间(由两个时间时间值(开始和结束)组成)是否经过例如午夜?

我试图使用LocalDateTime类,但似乎找不到任何有用的东西..

1 个答案:

答案 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时间,代码应该相似(如果不相同)。