乔达时间-重复/每周间隔

时间:2018-10-22 13:38:32

标签: java jodatime java-time

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

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);
    }

在这种情况下,尤达(Yoda)时间的间隔似乎“仅工作一次”,因为瞬间也总是指定日期。框架中是否有可以检查每周间隔的类?

1 个答案:

答案 0 :(得分:1)

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

我会简单地建议(当然,将所有常量导出到单独的变量中):

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

请注意,您当然可以创建单独的DurationPeriod对象,并在比较中使用这两个对象,但是我认为这不会比提出的解决方案更干净。