gpt4 book ai didi

php - 如果时间戳范围在时间戳范围内

转载 作者:搜寻专家 更新时间:2023-10-31 21:23:05 25 4
gpt4 key购买 nike

我有一组时间戳和持续时间以及一组占用的时间戳。我现在需要检查这些时间戳是否冲突。

基本上 $start[] 不能在任何 $occupied[] 时间戳中

$start[0] = 1486987200; // 12:00
$duration[0] = 3600;

$start[1] = 1487008800; // 18:00
$duration[1] = 7200;

$occupied[0] = 1486989000; // 12:30
$ocDuration[0] = 3600;

$occupied[1] = 1487019600; // 21:00
$ocDuration[1] = 7200;

从上面的$start[0]是不可能的,因为$occupied[0]在1小时(3600秒)的范围内,但是 $start[1] 是可能的,因为它从 18:00 开始,并在 2 小时后结束。

enter image description here

另一种情况可能是当 $occupied[0]$start[] 重叠时:

enter image description here

所以问题是,我该如何进行这样的检查?

最佳答案

如果你将使用 $start 和 $duration 作为非数组变量,你可以使用下面的这个。否则,只需编写一个双 for 循环即可。

$start[0] = 1486987200; // 12:00
$duration[0] = 3600;

$start[1] = 1487008800; // 18:00
$duration[1] = 7200;

$occupied[0] = 1486989000; // 12:30
$ocDuration[0] = 3600;

$occupied[1] = 1487019600; // 21:00
$ocDuration[1] = 7200;

$occupied[2] = 1486989000; // 12:30
$ocDuration[2] = 23400;

function checkOccupancy($start, $duration, $occupied, $ocDuration){
$ocLength = count($occupied);
for($i = 0; $i <= $ocLength; $i++){
$ocEnd = $occupied[$i] + $ocDuration[$i];
$end = $start + $duration;
if(($start > $occupied[$i] && $start < $ocEnd) || ($end > $occupied[$i] && $end < $ocEnd) ){
return "Not Possible";
}
}
return "Possible";
}

echo checkOccupancy($start[0], $duration[0], $occupied, $ocDuration);
echo checkOccupancy($start[1], $duration[1], $occupied, $ocDuration);

关于php - 如果时间戳范围在时间戳范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com