PHP检查日期范围是否发生在另一个日期范围内

时间:2014-04-30 11:06:21

标签: php datetime time comparison

我需要做的是检查一个"任务"在午餐时间不会发生。我有4个日期时间对象。我发现的最接近的代码在下面,但没有涵盖所有可能的情况,例如任务的开始可能是午餐的中途。

 if (($thisStart <= $lunchStart) && ($thisEnd >= $lunchStart)) {
     //happen at same time
 }

由于

亚历

3 个答案:

答案 0 :(得分:1)

这里你需要这个逻辑 将时间改为秒,这样很容易

但您的日期应为(“y / m / d”)格式

$thisStart_1 = strtotime($thisStart);


$lunchStart_1 = strtotime($lunchStart);  


$thisEnd_1 = strtotime($thisEnd);    

你的时间将会是这样的例子: - 2014-04-30 -------&gt; 1398808800(第二名)

所以,你在这里得到你的时间,所以很容易检查时间管理..

if (($thisStart_1 <= $lunchStart_1) && ($thisEnd_1 >= $lunchStart_1)) {
     //happen at same time
 }

如果您使用不同格式的日期,请使用此选项: -

以您的格式约会 - * /

$gDate='30/04/2014';//whatever format here put same in this "date_create_from_format" function

更改日期格式以使其可通过strtotime函数使用

 $date = date_create_from_format('d/m/Y', $gDate);

回显forate来检查真正的格式

$askfrmt = date_format($date, 'Y-m-d');

您指定日期的strtotime功能

$askfrmta = strtotime($askfrmt);

答案 1 :(得分:1)

if($thisStart >= $lunchStart && $thisStart <= $lunchEnd)
{
    //occurs during lunch
 } else if ($thisEnd >= $lunchStart && $thisEnd <= $lunchEnd)
{
    //occurs during lunch
}

那应该适合你。

但是,你是否可以澄清你的意思,它并没有涵盖所有的时间?

答案 2 :(得分:0)

&#39;我不确定理解您的问题,但如果您想知道thisStartthisEnd是否都在午餐期间尝试:

if (!($thisStart > $lunchEnd || $thisEnd < $lunchStart) ){    
// Occurs during lunch
}