如何检查 "start time" 是否不晚于 PHP 中的 "end time"

How to check if a "start time" is not later than "end time" in PHP

我正在尝试检查特定的“开始时间”是否不晚于另一个“结束时间”

例如:
开始:09:00 和结束:11:00 可以
开始:10:00 和结束:08:00 不正常

如果“结束时间”是午夜 (00:00),那没关系,因为:
开始:08:00 和结束:00:00 可以

我设法实现了这个小功能,而且它如我所愿:

<?php

function isTimeOk($start, $end) {
    if (($start < $end) or $end == '00:00') {
        return 'Ok';
    }

    return 'Not ok';
}

echo isTimeOk('09:00', '12:00');

?>

但是,我有两个问题:

有没有办法让这段代码更优雅?
如何使其兼容 12 小时制和 24 小时制?

感谢您的帮助!

您可以使用时间戳或将时间转换为日期时间:

function isTimeOk(string $start, string $end): bool {
    if ($end == '00:00') {
        return true;
    }

    $start_date = DateTime::createFromFormat('H:i', $start);
    $end_date = DateTime::createFromFormat('H:i', $end);
    
    return $start_date < $end_date;
}

有关时间格式(包括 12/24 时钟)的更多信息,请访问 https://www.php.net/manual/en/datetime.createfromformat.php

<?php

function isTimeOk($start, $end) {
    $start  = strtotime($start);
    $end    = strtotime($end);
    
    if (($start < $end) or $end == strtotime('00:00')) {
        return 'Ok';
    }

    return 'Not ok';
}
echo isTimeOk('09:00', '12:00');
?>

strtotime 应该可以。