Java比较日期以检查是否在范围内

sys*_*bug 7 java date

好吧,不像标题那么简单可能会让它听起来.我用c#以非常原始的方式尝试了这个并且它有效,但我觉得用Java和Oracle作为数据库可以实现更好的工作.所以事情是:

我有预订系统.只要该范围中的每一天可以容纳所请求的数字,就可以在同一天在日期X和日期Y之间的时间段内进行多次预订.要保留的最大群集数为46.因此,从逻辑上讲,您将每天视为46个群集预留的持有者并从中推断出.

现在我遇到的困难是:

如果在数据库中存储了多个有效的预订,那么我想进行新的预订.那么我该如何检查这个新的日期范围是否属于之前预订的任何天数.这里不仅仅谈论x落在y(作为范围).更像:

   X_______________________________________Y
       X________________________________y
  X________________________________Y
                         X________________________________Y
Run Code Online (Sandbox Code Playgroud)

你可以看到重叠正在发生.

请让我知道我怎么能这样做,因为它会影响对象的早期设计问候

cor*_*iKa 8

假设您的约会有两种方法:isBefore(Date other)isAfter(Date other).显然,如果他们不这样做,你可以通过外部方法或包装或其他方法来解决这个问题.编辑:java.util.Date有compareTo你可以使用的方法.

你做这个:

public boolean overlapsWithExisting(Booking booking) {
    final Date early = booking.getStart();
    final Date late = booking.getEnd();
    for(Booking existing : existingBookings) {
        if(!(early.isAfter(existing.getEnd()) || late.isBefore(existing.getStart()))
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我们将此预订与所有现有预订进行比较.如果此预订在现有预订开始之前结束,或者在现有预订结束后开始预订,则不会发生冲突.任何其他条件,他们将重叠.

对每个预订执行此操作.