【问题标题】:PHP compare between two times 24 hour format after 00:00 and beforePHP比较00:00之后和之前的两次24小时格式
【发布时间】:2018-05-10 22:43:25
【问题描述】:

我正在尝试比较两次,其中一个是 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 点之间进行评估?

【问题讨论】:

    标签: php time strtotime


    【解决方案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 非常适合滚动到下一个位置用过一些地方。

    【讨论】:

      【解决方案2】:

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

      <?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!";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-11
        • 1970-01-01
        • 2015-03-11
        • 1970-01-01
        • 2021-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多