【发布时间】:2020-04-12 00:10:21
【问题描述】:
这里有一个非常简单的问题,但需要一些逻辑专业知识来解决这个问题。所以,我有一个返回开始和结束时间的 API,对于一个 24 小时 int 格式的给定时间段,这样:开始时间为 4,开始分钟为 30,结束时间为 5,结束分钟为 30 . 请注意,返回的时隙以 30 分钟为增量,因此给定的小时将是从 1 到 24,给定的分钟将是 30 或 0。
所以现在我有一组范围,每个范围代表一个已被占用的时间段,我需要确定 API 中的任何给定时间是否重叠或落在其中一个时间段内。 (这些时隙的小时数从 1 到 24,但分钟可能不同,可以是 0 到 59 之间的任何时间)。
到目前为止,我的逻辑是:
for (int i = 0; i < ranges.size(); i++) {
int rangeStartHour = ranges.get(i).getStartTime().getHour();
int rangeEndHour = ranges.get(i).getEndTime().getHour();
int rangeStartMinute = ranges.get(i).getStartTime().getMinute();
int rangeEndMinute = ranges.get(i).getStartTime().getMinute();
if ((rangeStartHour == 0 && rangeEndHour == 24
&& rangeStartMinute == 0 && rangeEndMinute == 0)) {
isAvailable = false;
} else {
isAvailable = true;
}
}
我错过了一个 if in between,我需要确定给定时间范围是否介于或等于任何占用的时间段以避免重叠。有什么想法最好的方法是什么?我希望有一个非常简单且紧凑的解决方案,始终适用于这种情况。接受所有建议,值得一试!如果需要进一步澄清这一点,很高兴分享更多细节 提前致谢!
【问题讨论】: