PHP两次之间的时间

时间:2014-04-22 19:01:46

标签: php datetime time

我试图让一些代码工作来检测当前时间介于哪个时间值对。我使用的代码如下。但是,我一直在“不与之匹敌”。即使当前时间属于其中一个范围。不知道我哪里出错了。

//GET CURRENT TIME
$tz_object = new DateTimeZone('America/New_York');
$current_time = new DateTime();
$current_time->setTimezone($tz_object);

//SET TIME RANGE PAIRS
$time1Start = '08:00:00';
$time1End = '16:59:59';
$time2Start = '17:00:00';
$time2End = '07:59:59';

//FORMAT TIMES
$current_time = DateTime::createFromFormat('H:i:s', $current_time);
$time1Start = DateTime::createFromFormat('H:i:s', $time1Start);
$time1End = DateTime::createFromFormat('H:i:s', $time1End);
$time2Start = DateTime::createFromFormat('H:i:s', $time2Start);
$time2End = DateTime::createFromFormat('H:i:s', $time2End);

//TIME 1 SLOT
if ($current_time >= $time1Start && $current_time <= $time1End)
    {
        echo 'RANGE 1';
    }
//TIME 2 SLOT   
elseif ($current_time >= $time2Start && $current_time <= $time2End)
    {
        echo 'RANGE 2';
    }
else
    {
        echo 'NO MATCH';
    }

**更新**

所以当我开始使用时区转换时,似乎这开始失败了。如果我传递原始时间值,它可以正常工作。但是,当我看到这一点时,我认为我过于复杂化了我想要做的事情。基本上,我只需要确定当前时间是否在两个值之间。为了我的目的,我不关心今天,明天,昨天等等。我只需要知道16:42是在08:00到15:00之间还是在15:01到07:59之间。这对我来说似乎很简单,但无论我如何简化它,我都无法使代码实现工作。

1 个答案:

答案 0 :(得分:0)

您可以轻松检查而不是代码,

if(date('H:i:s') == $your_time){
 //your code;
}