从小时X到小时Y显示警报

时间:2017-05-23 15:24:00

标签: php

您好我想从小时X到小时Y显示警告

我有:

  $currday = date('l');
    $starting_hour = DB::table('time')->select('starting_hour')->where('day' == $currday)->get();
    $ending_hour = DB::table('time')->select('ending_hour')->where('day' == $currday)->get();
    $currhour = date('H')

    if($currhour > $starting_hour || $currhour < $ending_hour)
       return 'yes alert';
    else
       return 'no alert';

假设$currhour等于11.这是一个问题,因为我只想在时间间隔为18 - 22时显示此警报。另一种情况是间隔18 - 9(下一个)这一天会很好用,因为11它是&lt;超过18和11它是&gt;比9 ..

我如何解决所有情况?

修改: 案例使用||

案例1:

$starting_h = 16;
$ending_h = 22;
$currenthour = 5;

如果我正在使用

if($currhour >= 16 || $currhour <= 22)

将返回true ..但我想仅在以下时间返回此警报:16,17,18,19 ... 22

案例2:

$starting_h = 16;
$ending_h = 5;
$currenthour = 4;

  if($currhour >= 16 || $currhour <= 5)

任何组合都可以。

使用&&

的案例

案例1:

$starting_h = 16;
$ending_h = 5;
$currenthour = 4;

if($currhour >= 16 && $currhour <= 5)

=&GT;不行,因为我想在间隔16 PM-5AM显示消息,现在4&lt; 16。

案例2:

$starting_h = 16;
$ending_h = 5;
$currenthour = 4;

if($currhour >= 16 && $currhour <= 5)

这将适用于任何组合..

3 个答案:

答案 0 :(得分:0)

您需要使用&&而不是||

$currhour = date('H')

if($currhour > 18 && $currhour < 22)
    return 'yes alert';
else
    return 'no alert';

答案 1 :(得分:0)

您可以使用配置开始时间和结束时间之间的比较来发现早上的时间是否可以接受。

$currhour = date('H');


if(($ending_hour > $starting_hour && ($currhour > $starting_hour && $currhour < $ending_hour)) || ($starting_hour > $ending_hour && ($currhour > $starting_hour || $currhour < $ending_hour)))
    return 'yes alert';
else
    return 'no alert';

答案 2 :(得分:0)

你应该先检查开始时间和结束时间。

$currhour = date('H')
$start = 18;
$end = 9;

if($start < $end &&  $currhour > $start && $currhour < $end)
   return 'yes alert';
else if ($start > $end) {
   if ($currhour < $start && $currhour > $end)
      return 'no alert';
   else
      return 'yes alert';
} 
else
   return 'no alert';

如果你想将它包装在一个函数中,你甚至可以将它缩短到下面

function showAlert($start, $end)
{
    $currhour = date('H')

    if($start < $end &&  $currhour >= $start && $currhour <= $end)
        return 'yes alert';
    else if ($start > $end) {
        if ($currhour > $start && $currhour < $end)
            return 'yes alert';
    }

    return 'no alert';
}

showAlert(18, 9);