好的,我有一个功能,可以比较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
}
建议?
答案 0 :(得分:1)
由于没有24:00:00
,您需要完整日期字符串Y-m-d H:i:s
才能进行准确比较。
即使仅添加日期也不够,因为在查看该月的最后一天('31 08:00:00' < '1 00:00:00'
)时它会中断。
答案 1 :(得分:1)
PHP有非常好的DateTime支持。最好使用它而不是重新发明的东西。也像@ mopo922建议的那样,你需要完整的Y-m-d H:i:s
答案 2 :(得分:0)
上面提供的答案@ mopo922是最简单,最正确的答案。
另一种方法是在$ startTime“加上”24小时,如果$ startTime&gt; $ 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';
}
?>