PHP 比较 00:00 之后和之前的两次 24 小时格式



我正在尝试比较两次,一次是 12 小时格式,另一次是 24 小时格式,即上午 12 点之后。

$time = date( 'H:i:s', current_time( 'timestamp', 0 ));
$open = '18:00';
$closed = '01:30';
if ( $time < $open || $time > $closed)
{
//do something
}

这总是失败,这与 01.30 有关,因为如果我做任何小于 00:00 的事情,例如 23.30:

$time = date( 'H:i:s', current_time( 'timestamp', 0 ));
$open = '18:00';
$closed = '23:30';

以上作品。

我也尝试过这样的时间,但没有成功。

if ( $time < strtotime($open) || $time > strtotime($closed))

我如何在早上 6 点到凌晨 2 点之间进行评估?

就像处理月份和 1 月是今年的第一个月或去年的第 13 个月一样,凌晨 1 点是今天的第 1 小时或明天的第 25 小时。

我会颠倒你的逻辑,确定它目前是否大于 0130 且小于 1800。 取出冒号,它变得非常容易

$close=013000;
$open=180000;
$now=date( 'His', time());
if (($close<$now)&&($now<$open)){
print("Go away, we're closed");
}else{
print("Welcome to the store!");
}

如果您不想反转逻辑,则不要使用 01:30,而是使用 25:30 作为值 - PHP 和date非常适合在某个地方使用大于最大值时滚动下一个位置。

由于您只是比较当前时间(现在的时间(,因此从逻辑上讲,您不必担心明天的时间。您只需要比较您是否在今天的开盘/关闭时间之内/之外。

<?php
// SET RELEVANT TIMEZONE
date_default_timezone_set('Europe/Dublin');
// CURRENT UNIX TIMESTAMP
$time_now = time();
// TODAY AT 18:00:00 (24 HOUR) UNIX TIMESTAMP
$opening_time = DateTime::createFromFormat('H:i:s', '18:00:00')->format("d-M-Y H:i:s"); // 11-May-2018 18:00:00
// TODAY AT 01:30:00 (24 HOUR) UNIX TIMESTAMP
$closing_time = DateTime::createFromFormat('H:i:s', '01:30:00')->format("d-M-Y H:i:s"); // 11-May-2018 01:30:00
// WE ARE CLOSED IF:
// TIME NOW IS AFTER CLOSING TIME TODAY (01:30:00)
// AND TIME NOW IS BEFORE OPENING TIME TODAY (18:00:00)
if($time_now > strtotime($closing_time) && $time_now < strtotime($opening_time))
{
echo "Sorry, we are closed!";
}
else
{
echo "We are open, come on in!";
}

最新更新