我有3个可配置的时间间隔,现在设置为:
1 06:00 - 14:30
2 14:30 - 23:00
3 23:00 - 06:00
我想检查用户更改时间间隔是否重叠,然后阻止更改。
但是我不知道该怎么做,我用谷歌搜索,我使用了一些IRC,他们告诉我我可以这样做:
Start1 < Stop3
Start2 < Stop1
Start3 < Stop2
在我设置
之前,这样可以正常工作Stop3 = 23:00
Start1 = 00:00
也许有任何提示?
谢谢
答案 0 :(得分:2)
由于时间段可能会延长到第二天,因此您必须添加虚假日期。
如果您的时间值属于TTime
类型,并且测试变量属于TDateTime
类型:
if (StartTime1 > StopTime1) then begin // Extend time to next day
StartDT1 := StartTime1;
StopDT1 := DateUtils.IncDay(StopTime1,1);
end
else begin
StartDT1 := StartTime1;
StopDT1 := StopTime1;
end;
在所有三个时间间隔内执行此操作。
然后很容易检查与此测试的重叠:
overlap := (StartDT1 < StopDT2) and (StartDT2 < StopDT1) or
(StartDT1 < StopDT3) and (StartDT3 < StopDT1) or
(StartDT2 < StopDT3) and (StartDT3 < StopDT2);