如何检查 "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 应该可以。
我正在尝试检查特定的“开始时间”是否不晚于另一个“结束时间”
例如:
开始: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 应该可以。