我想将如下所示的字符串转换为一个对象,该对象可以评估瞬间是否具有周期性间隔:
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)时间的间隔似乎“仅工作一次”,因为瞬间也总是指定日期。框架中是否有可以检查每周间隔的类?
答案 0 :(得分:1)
在Joda Time中没有这样的选项,因为所有相关类要么包含有关时间边界的完整信息(Duration
和Interval
就是这种情况),要么将周期存储在给定的单位中(Period
就是这种情况)。
我会简单地建议(当然,将所有常量导出到单独的变量中):
public boolean isWithinInterval(Instant instant) {
DateTime dateTime = instant.toDateTime();
return dateTime.getDayOfWeek() == MONDAY
&& dateTime.getHourOfDay() >= 8
&& dateTime.getHourOfDay() <= 13;
请注意,您当然可以创建单独的Duration
和Period
对象,并在比较中使用这两个对象,但是我认为这不会比提出的解决方案更干净。