PHP 比较 00:00 之后和之前的两次 24 小时格式
PHP compare between two times 24 hour format after 00:00 and before
我正在尝试比较两个时间,一个是 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';
以上作品。
我也试过这样的strtotime,但没有成功。
if ( $time < strtotime($open) || $time > strtotime($closed))
如何在下午 6 点到凌晨 2 点之间进行评估?
就像处理月份一样,一月是今年的第一个月或去年的第 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
非常好当某个地方使用大于最大值时滚动到下一个位置。
因为你只是在比较当前时间(现在的时间),逻辑上你不必担心明天的时间。如果你是今天的inside/outside次,你只需要比较opening/closing次。
<?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!";
}
我正在尝试比较两个时间,一个是 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';
以上作品。
我也试过这样的strtotime,但没有成功。
if ( $time < strtotime($open) || $time > strtotime($closed))
如何在下午 6 点到凌晨 2 点之间进行评估?
就像处理月份一样,一月是今年的第一个月或去年的第 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
非常好当某个地方使用大于最大值时滚动到下一个位置。
因为你只是在比较当前时间(现在的时间),逻辑上你不必担心明天的时间。如果你是今天的inside/outside次,你只需要比较opening/closing次。
<?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!";
}