我一直在尝试一种方法,即给定一周中的一天和一天中的某个时间,如果它属于自定义的周末时段,它将返回。
周末期间保存在4个变量中,如下所示:
开始的星期几(0-6)
一天中开始的时间(0-23)
一周结束的那一天(0-6)
一天结束的时间(0-23)
基于这些字段,周末期间可以是用户选择的任何时间段(即使它远远超出了常规周末)
我敲了这个有一段时间了,但没用。我在delphi中尝试这个,但是任何语言都可以,因为我在寻找算法,而不是实现。
最佳答案
我假设还有一个约束条件,端点是>=beginpoint。
最简单的方法是将其标准化为“从一周开始的几个小时”。
double interest = day * 24 + hours;
double startWeekend = startDay * 24 + startHours;
double endWeekend = endDay * 24 + endHours.
bool isInWeekend = interest >= startWeekend && interest < endWeekend;
根据需要调整=值。
编辑:
如果问题是一个周末可能会与7*24小时的边界重叠,那么它会变得更有趣:
if startWeekend < endWeekend
then isInWeekend = interest >= startWeekend AND interest < endWeekend;
else isInWeekend = interest >= startWeekend OR interest < endWeekend;
(稍微混合了C/Pascal伪代码)