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 中没有这样的选项,因为所有相关的 类 要么包含有关时间边界的完整信息(Duration
和 Interval
就是这种情况),要么会以给定单位存储一个句点(Period
就是这种情况)。
我会简单地推荐(当然将所有常量导出到单独的变量):
public boolean isWithinInterval(Instant instant) {
DateTime dateTime = instant.toDateTime();
return dateTime.getDayOfWeek() == MONDAY
&& dateTime.getHourOfDay() >= 8
&& dateTime.getHourOfDay() <= 13;
请注意,您当然可以创建单独的 Duration
和 Period
对象并在比较中使用它们,但我认为这不会比所提供的解决方案更清晰。
我想将如下所示的字符串转换为一个对象,该对象可以评估一个瞬间是否在周期性间隔内:
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 中没有这样的选项,因为所有相关的 类 要么包含有关时间边界的完整信息(Duration
和 Interval
就是这种情况),要么会以给定单位存储一个句点(Period
就是这种情况)。
我会简单地推荐(当然将所有常量导出到单独的变量):
public boolean isWithinInterval(Instant instant) {
DateTime dateTime = instant.toDateTime();
return dateTime.getDayOfWeek() == MONDAY
&& dateTime.getHourOfDay() >= 8
&& dateTime.getHourOfDay() <= 13;
请注意,您当然可以创建单独的 Duration
和 Period
对象并在比较中使用它们,但我认为这不会比所提供的解决方案更清晰。