【发布时间】:2015-08-10 16:15:10
【问题描述】:
我有一个JodaTimeIntervals 的列表。这些Intervals 包含来自以下位置的时间规范:
(在军事时期)
00:00:00 - 10:00:00
11:30:00 - 15:00:00 (3:00:00 PM)
15:30:00 - 23:59:59 (11:59:59 PM).
我的问题是我想使用来自用户的Interval 抽象来检测哪个时间段适合用户所需的时间间隔。
例如,我用这段代码计算:
optimizeIntervals(generateMeetingIntervals());
generateBetweenIntervals();
ArrayList<Interval> during = getMeetingDuringIntervals();
ArrayList<Interval> between = getMeetingBetweenIntervals();
Interval desiredDuration = new Interval(now,now.plusMinutes(requestedDuration));
for(int i = 0; i<between.size();i++){
Interval current = between.get(i);
if(current.getEnd().isAfter(now)){
if (current.contains(testing)){
setNextAvailableStart(now);
setNextAvailableEnd(current.getEnd());
}
}
}
但是我不能使用Intervals,因为我需要找到符合用户标准的下一个可用间隔。如果我将Interval 用于desiredDuration,这意味着,如果用户想要一个“15 分钟长”的时间段 我希望算法找到下一个可用的 15 分钟时间段。但是,此算法不起作用,因为区间仅检查 start 和 end 时间是否在包含区间的 start 和 end 时间之间。
例子:
now = 10:30 AM
desiredDuration = 30 minutes
而desiredDuration 计算为与10:30 AM to 11:00 AM 的间隔
循环运行:
10:30 AM to 11:00 AM 是否包含在 00:00:00 to 10:00:00 中? - 没有
10:30 AM to 11:00 AM 是否包含在 11:30:00 to 15:00:00 中? - 否应该是
但是,在第二次检查中,我只想查看在该时间范围内是否有30 minutes 的持续时间。我该怎么做?
【问题讨论】:
标签: datetime jodatime intervals date-range