我想知道如何获取与其他日期时间范围重叠的日期时间范围。 特殊性在于日期范围可以有时间范围连续两天重叠。PHP:选择重叠的日期时间范围与时间范围重叠的日期
例如,我有一个经常性预订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的角度来看,我有以下保留: 日期和时间在这里表示为字符串的可读性。实际上他们是DateTime。
//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
@ishegg是的,我尝试通过'startA startB'来比较预订每一天的每个时间范围和其他所有预定的每个时间范围。但不确定是否没有更好的解决方案。 –
Tsounabe