【问题标题】:Creating a conditional function based on timeframe根据时间范围创建条件函数
【发布时间】:2019-11-06 09:24:07
【问题描述】:

正如标题所示,我需要在 PHP 中根据时间框架创建一个条件函数。在PHP知识方面我非常基础,但可以理解概念。

我有一些第 3 方代码,但我需要它仅在特定时间范围内运行,并且在超出范围时基本上被禁用。

我正在尝试实现以下目标:

IF time >=0800<=1700 (
    DO NOTHING
) ELSE (
    RUN CODE
)

这个问题的背景故事是我有一些 3rd 方代码将谷歌对话流集成到一个网站中,但它目前 24/7 运行,我有一个从 0800 到 1700 运行的实时聊天系统,并希望谷歌对话流(聊天机器人)在什么时候运行实时聊天没有运行。

我并不是真的在寻找一个直截了当的答案,而是更多关于如何实现这一目标背后的概念,以便我可以更好地为未来学习。

谢谢, 马丁

【问题讨论】:

    标签: php conditional-statements


    【解决方案1】:
    IF time >=0800<=1700 (
        DO NOTHING
    ) ELSE (
        RUN CODE
    )
    

    首先,你不需要 if else,单独 else 就可以了,在伪代码中:

    IF time < 0800 OR TIME > 1700
        RUN CODE
    

    接下来要知道的是如何检查当前时间,有很多方法可以做到这一点,所以让我们想想哪种方法最好。

    我们只关心小时和分钟,所以让我们来看看吧。

    $hourNow = date('H'); // $hour now is a string but we'd rather have it as an integer for better comparison.
    
    $hourNow = (int) $hourNow; // this will cast, for example "15" to 15
    
    $minuteNow = (int) date('i'); // as you can see you can do casting and getting a minute value at once
    
    
    

    现在,当我们拥有所需的所有信息时,应该很容易编写:

    
    if ($hourNow < 8 || ($hourNow === 17 && $minuteNow > 0) || $hourNow > 17) {
       // Do whatever you need in this case.
    }
    

    条件非常简单:如果小时小于 8 - 我们知道它早于 8 点。 如果它> 17,那显然是更晚了。

    如果是 17,这是一种边缘情况,因为它可能是 17:00 - 所以我们需要指定分钟大于 0。

    希望对你有帮助,如果有什么不清楚的地方欢迎追问。

    【讨论】:

    • 非常感谢您提供的信息丰富的答案,它准确地解释了我如何实现我的目标。我会试一试,希望它能奏效。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多