首页 > 解决方案 > 根据时间范围创建条件函数

问题描述

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

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

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

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

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

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

谢谢,马丁

标签: phpconditional-statements

解决方案


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。

我希望这会有所帮助,请随时询问是否有不清楚的地方。


推荐阅读