检查24小时格式化小时是否在2个其他人之间,超过2天

时间:2017-12-10 23:12:46

标签: php datetime

我有一个日期时间,通过获取当前时间并将其格式化为用户的时区获得。让我们说它是“18”,下午6点,24小时格式。

我需要在检查它是否在一天的15h和第二天的10h之间返回时返回true / false。下午3点到下午10点之间。

到目前为止,我的代码看起来像这样,但我无法让PHP了解到结束时间是在第二天。我做错了什么?!

$deviceTZ = 'America/Toronto';
$dt = new DateTime("now", new DateTimeZone($deviceTZ));
$dt->setTimestamp(time());
$deviceTime = $dt->format('H');

$silentStart = 15;
$silentEnd = 10;
$silentStartDT = date_create_from_format('H', $silentStart);
$silentEndDT = date_create_from_format('H', $silentEnd);

if($silentStartDT > $silentEndDT)
{ $silentEndDT->modify('+1 day'); }

if (($deviceTime > $silentStartDT) && ($deviceTime < $silentEndDT))
{ echo "Silent Period"; }
else { echo "Not Silent"; }

1 个答案:

答案 0 :(得分:0)

我想我可能想出一个解决方案

$deviceTime = new DateTime("now", new DateTimeZone($deviceTZ));
$silentStartDT = new DateTime($silentStart.":00");
$silentEndDT = (new DateTime($silentEnd.":00"))->modify('+1 day');

if($silentStart == 0 && $silentEnd == 0)
{ echo "No Silent Mode set."; }
else{
    if ($deviceTime >= $silentStartDT && $deviceTime <= $silentEndDT) 
    { echo "Within Range<br>"; }
}