【发布时间】:2018-03-03 08:40:32
【问题描述】:
我想知道如何让日期时间范围与其他日期时间范围重叠。 特别是日期范围可以有时间范围重叠连续两天。
例如,我有一个定期预订,即 01/01 和 02/01 从 20:00 开始,到第二天 02:00 结束。
第一天:
$start = '2017-01-01 20:00';
$end = '2017-01-02 02:00';
第二天:
$start = '2017-01-02 20:00';
$end = '2017-01-03 02:00';
现在我想知道如何让预订与此预订重叠。
注意:所有预订的时间范围可以有也可以不重叠。
例如,从 PHP 的角度来看,我有以下保留意见: 为了便于阅读,日期和时间在此处表示为字符串。实际上它们是日期时间。
//The reservation
$reservation= array(
array(
'day' => '2017-01-01',
'time_range' => array('20:00', '23:59')
),
array(
'day' => '2017-01-02',
'time_range' => array('00:00', '02:00')
),
);
//Other reservations
$reservations= array(
//Reservation doesn't overlap
array(
'day' => '2017-01-01',
'time_range' => array('18:00', '19:00')
),
//Reservation overlaps
array(
'day' => '2017-01-01',
'time_range' => array('21:00', '22:00')
),
//Reservation overlaps
array(
array(
'day' => '2017-01-01',
'time_range' => array('23:00', '23:59')
),
array(
'day' => '2017-01-02',
'time_range' => array('00:00', '01:00')
),
),
...
);
谢谢!
【问题讨论】:
-
你有什么尝试吗?
-
@ishegg 是的,我尝试将预订的每一天的每个时间范围与
startA < endB && endA > startB的所有其他预订的每一天的每个时间范围进行比较。但不确定是否有更好的解决方案。
标签: php date time range overlap