我一直在尝试提出一种方法,即给定一天中的一天和一天中的某个时间,如果它属于定制的周末时间,它将会返回。
周末期间保存在4个变量中,如下所示:
根据这些字段,周末时段可以是用户选择的任何内容(即使它远远超出常规周末)
我一直在打这个,但无济于事。我在delphi中尝试这个,但任何语言都会这样做,因为我正在寻找算法,而不是实现。
答案 0 :(得分:1)
我假设还有一个约束,即端点是> = beginpoint。
最简单的方法是规范化为“自开始一周以来的小时数”。
double interest = day * 24 + hours;
double startWeekend = startDay * 24 + startHours;
double endWeekend = endDay * 24 + endHours.
bool isInWeekend = interest >= startWeekend && interest < endWeekend;
根据需要调整&lt; =和&gt; =。
如果问题是周末可能会重叠7 * 24小时的边界,那么它会变得更有趣:
if startWeekend < endWeekend
then isInWeekend = interest >= startWeekend AND interest < endWeekend;
else isInWeekend = interest >= startWeekend OR interest < endWeekend;
(略微混合的C / Pascal伪代码)
答案 1 :(得分:0)
将这四个值称为d start ,d end 为当天,h start ,h end 为时间。然后考虑从第0天开始的小时数,小时0,由t_start
= d start * 24 + h start 给出,同样为{ {1}}。
如果您当前所在的小时数在t_end
之前或t_end
之后,那么您将处于周末期间。
答案 2 :(得分:0)
如果你想处理换行的间隔,
double hstart = startDay*24 + startHour;
double hend = endDay*24 + endHour;
double htest = testDay*24 + testHour;
return (hend-hstart)*(htest-hstart)*(hend-htest) > 0