好的,所以我有一个函数来比较从00:00:00 - 24:00:00
开始的小时数以告诉关闭时间。 现在我遇到的问题是,假设商店早上 8 点开门,午夜关门,那么00:00:00
会不到 23:00:00
.我将如何确保它认识到午夜更大?
这是我正在做的事情:
if((strtotime($openTime) < time()) && (strtotime($closeTime) > time()))
{
$response['data_retrieved']['store'][$i]['store_settings']['open'] = 1;// open
}
else
{
$response['data_retrieved']['store'][$i]['store_settings']['open'] = 0; //close
}
建议?
由于没有24:00:00
,您需要完整的日期字符串Y-m-d H:i:s
才能进行准确的比较。
即使只是添加日期也是不够的,因为它会在查看该月的最后一天('31 08:00:00' < '1 00:00:00'
)时中断。
PHP 有一个非常好的 DateTime 支持。最好使用它而不是重新发明东西。也像@mopo922建议的那样,您需要完整的Y-m-d H:i:s
上面@mopo922提供的答案是最万无一失、最正确的答案。
另一种方法是在$startTime> $closeTime的情况下将 24 小时"添加到"$closeTime。这很狡猾,但仍然可以解决问题。
<?php
date_default_timezone_set('Australia/Sydney');
$openTime = strtotime('08:00');
$currentTime = strtotime('23:00');
$closeTime = strtotime('10:00');
echo 'open: ' .$openTime . '<br>' .
'time(): ' . $currentTime . '<br>' .
'close: ' . $closeTime . '<br>';
// 1 day = 86400 seconds
if ($closeTime < $openTime) {
$closeTime += 86400;
}
if($openTime < $currentTime && $closeTime > $currentTime)
{
echo 'open';
}
else
{
echo 'closed';
}
?>