比较 h:ia 时间格式字符串 php - 不工作

Compare h:ia time format string php - not working

例如,我的 tmp 数组是:

Array
(
    [checkin] => 11:00am
    [checkout] => 12:00pm
    [day_from] => 09:59am
    [day_to] => 06:00pm
)

我正在使用下面的代码来比较时间,但在这两种情况下它总是显示 'hello' 甚至入住时间和结账时间都在开始日期和结束日期范围内。

实际上,此功能是检查客人的入住和退房时间是否在餐厅营业时间内?

任何帮助将不胜感激!提前致谢:-)

$tmp_arr = array();
$tmp_arr['checkin'] = $checkin = date('h:ia',strtotime($checkin));
$tmp_arr['checkout'] = $checkout = date('h:ia',strtotime($checkout));
$tmp_arr['day_from'] = $day_from = date('h:ia',strtotime($day_from));
$tmp_arr['day_to'] = $day_to = date('h:ia',strtotime($day_to));
print_r($tmp_arr);
if($checkin>=$day_from && $checkin<=$day_to){
    echo "hi";
}
else{
    echo "hello";
}
if($checkout>=$day_from && $checkout<=$day_to){
    echo "hi";
}
else{
    echo "hello";
}

您应该使用 strtotime 将时间字符串转换为 unix 时间戳。然后您可以按照预期的方式比较它们。

$checkin = '11:00am';
$checkout = '12:00pm';
$day_from = '09:59am';
$day_to = '06:00pm';

$tmp_arr = array();
$tmp_arr['checkin'] = $checkin = strtotime($checkin);
$tmp_arr['checkout'] = $checkout = strtotime($checkout);
$tmp_arr['day_from'] = $day_from = strtotime($day_from);
$tmp_arr['day_to'] = $day_to = strtotime($day_to);
print_r($tmp_arr);
if($checkin>=$day_from && $checkin<=$day_to){
    echo "hi";
}
else{
    echo "hello";
}
if($checkout>=$day_from && $checkout<=$day_to){
    echo "hi";
}
else{
    echo "hello";
}