Joda 时间 - repeating/weekly 间隔

Joda Time - repeating/weekly Interval

我想将如下所示的字符串转换为一个对象,该对象可以评估一个瞬间是否在周期性间隔内:

Mon: 0800-1300

我正在寻找我可以使用的类似于此伪代码的某种功能:

class IntervalHolder {

    private PeriodicInterval interval;

    public IntervalHolder(String intervalString) {
        interval = Interval.parse(intervalString)
    }

    public boolean isWithinInterval(Instant instant) {
        return interval.contains(instant);
    }

在那种情况下,尤达时间间隔似乎 "to work only once",因为瞬间也总是指定日期。框架中是否有 class 可用于检查每周间隔?

Joda Time 中没有这样的选项,因为所有相关的 类 要么包含有关时间边界的完整信息(DurationInterval 就是这种情况),要么会以给定单位存储一个句点(Period 就是这种情况)。

我会简单地推荐(当然将所有常量导出到单独的变量):

public boolean isWithinInterval(Instant instant) {
    DateTime dateTime = instant.toDateTime();
    return dateTime.getDayOfWeek() == MONDAY
           && dateTime.getHourOfDay() >= 8
           && dateTime.getHourOfDay() <= 13;

请注意,您当然可以创建单独的 DurationPeriod 对象并在比较中使用它们,但我认为这不会比所提供的解决方案更清晰。