我有一个日期时间,通过获取当前时间并将其格式化为用户的时区获得。让我们说它是“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"; }
答案 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>"; }
}