【发布时间】:2021-06-30 20:01:46
【问题描述】:
我想确定给定的时间间隔是否不属于其他时间间隔(使用 24 小时制格式),示例如下:
案例1:
$startDate = '2021-04-05 08:05:00';
$endDate = '2021-04-05 10:05:00';
$intervals = [['startDate' => '2021-04-05 08:30:00', 'endDate' => '2021-04-05 11:05:00'], ['startDate' => '2021-04-05 12:30:00', 'endDate' => '2021-04-05 13:05:00']]
在这种情况下我们应该设置:
$flagCanSchedule = 0;
因为 2021-04-05 08:05:00 到 2021-04-05 10:05:00 介于此间隔之间:
'startDate' => '2021-04-05 08:30:00', 'endDate' => '2021-04-05 11:05:00'
但是对于这个: 案例2:
$startDate = '2021-04-05 08:05:00';
$endDate = '2021-04-05 10:05:00';
$intervals = [['startDate' => '2021-04-05 10:05:00', 'endDate' => '2021-04-05 11:05:00'], ['startDate' => '2021-04-05 07:30:00', 'endDate' => '2021-04-05 08:05:00']]
在这种情况下设置:
$flagCanSchedule = 1;
因为我们不重叠任何其他区间,所以 evan tho ('2021-04-05 08:05:00' == '2021-04-05 08:05:00')。
我想使用 strtotime 解决这个问题并将日期转换为 unix 格式,但我不确定如何编写我的 if 语句。
$startDate = strtotime('2021-04-05 08:05:00');
$endDate = strtotime('2021-04-05 10:05:00');
foreach($intervals as $interval) {
if($startDate <= strtotime($interval['startDate']) && $endDate <=
strtotime($interval['endDate'])) {
$flagCanSchedule = 1;
} else {
$flagCanSchedule = 0;
}
}
【问题讨论】: