Java - 使用 Joda 定义时间间隔

Java - Define intervals of time with Joda

我必须对商业开放的时间间隔进行建模,例如:周一至周五 10hs-18hs,并具有检查商业是否开放的功能。我认为最合理的是使用 Joda 提供的 class "Interval" ,但我不能只用几天或几小时来实例化一个 Interval 。我必须使用 Joda。

引用 Interval 的 javadoc:

A time interval represents a period of time between two instants.

因为"Monday at 10:00"不是瞬间,你不能使用Interval

Joda-Time 库没有class你想要的,所以你必须自己写。

"must use JODA" 简单的要求意味着您的 class 应该将 LocalDateTime 作为输入并使用 Joda-Time 查询工作日和一天中的时间。


一个好的可重复使用的 class(例如称为 OpenCalendar)可能会这样使用:

OpenCalendar openCal = new OpenCalendar();
openCal.add(DateTimeConstants.MONDAY   , new LocalTime(10, 0), new LocalTime(18, 0));
openCal.add(DateTimeConstants.TUESDAY  , new LocalTime(10, 0), new LocalTime(18, 0));
openCal.add(DateTimeConstants.WEDNESDAY, new LocalTime(10, 0), new LocalTime(18, 0));
openCal.add(DateTimeConstants.THURSDAY , new LocalTime(10, 0), new LocalTime(18, 0));
openCal.add(DateTimeConstants.FRIDAY   , new LocalTime(10, 0), new LocalTime(18, 0));

LocalDateTime now = LocalDateTime.now();
if (openCal.isOpen(now)) {
    // code here
}