PHP - 如何检查当前日期/时间是否在两个工作日之间,包括时间(从 - 到)

时间:2016-10-16 08:48:55

标签: php mysql date

我需要检查当前日期和时间是否在两个工作日之间,包括时间(从和到)。数据库中可以有多个记录,工作日通过PHP日期('N')存储,其中1(星期一)到7(星期日)以及小时 - 分钟通过时间存储。

例如,存储的规则可以是: week_day_from:5(星期五) week_hour_from:16:00:00 week_day_to:7(星期日) week_hour_to:18:00:00

甚至 week_day_from:7(星期日) week_hour_from:10:00:00 week_day_to:2(星期二) week_hour_to:1200:00

如何确定当前日期/时间是否适用于其中一条规则?主要想法是隐藏一些结果,如果其中一条规则适用(即不要在星期五16:00之后和星期日18:00之前显示这顿饭)

提前谢谢

2 个答案:

答案 0 :(得分:0)

函数getdate将为您提供更准确的信息。函数getDate()将返回一个包含工作日和时间信息的数组。通过设置间隔,您可以确定是否适用。

答案 1 :(得分:0)

找到了一些东西......

必须创建伪日期才能使用strtotime并与当前日期时间进行比较。伪日期是通过如下所示的条件创建的,这些条件被评论以描述我的逻辑。

我更喜欢基于My​​SQL查询的解决方案而不是获取所有规则并进行比较,但我找不到方法。如果你查看我的代码并告诉我你的想法,我将不胜感激。缺陷可能是......

    $daynow = date("N"); //$daynow = 7;
    $datetimenow = date("d-m-Y G:i:s"); 

    if($row['week_day_from'] > $row['week_day_to'])
    {// case from saturday(6) to thursday(4)
        if($daynow == 7)
        {
        $check_from = date("d-m-Y", strtotime("Sunday + ".$row['week_day_from']." Days - 1 week"));
        $check_to = date("d-m-Y", strtotime("Sunday + ".$row['week_day_to']." Days"));
        }
        else
        {
        $check_from = date("d-m-Y", strtotime("Sunday + ".$row['week_day_from']." Days - 2 week"));
        $check_to = date("d-m-Y", strtotime("Sunday + ".$row['week_day_to']." Days - 1 week"));
        }
    }
    else
    {// case from thursday(4) to saturday(6)
        if($daynow == 7)
        {
        $check_from = date("d-m-Y", strtotime("Sunday + ".$row['week_day_from']." Days"));
        $check_to = date("d-m-Y", strtotime("Sunday + ".$row['week_day_to']." Days"));
        }
        else
        {
        $check_from = date("d-m-Y", strtotime("Sunday + ".$row['week_day_from']." Days - 1 week"));
        $check_to = date("d-m-Y", strtotime("Sunday + ".$row['week_day_to']." Days - 1 week"));
        }
    }

    if
    (
        strtotime($datetimenow) >= strtotime($check_from." ".$row['week_hour_from'])
        AND 
        strtotime($datetimenow) <= strtotime($check_to." ".$row['week_hour_to'])
    )
    {
    //RULE APPLIES
    }