php - 如何检查时间数组的单个值是否在另一个时间的 +/- 15 分钟范围内

标签 php time logic strtotime

我应该怎样做才能使 4 位整数/字符串表现得(而不是看起来)像时间?

考虑这段代码:

$t = 0430;
$timeArray = array('0400', '0415', '0420', '0430', '0440', '0450', '0500', '0600');

现在如果我必须搜索$timeArray对于距离 $t +/- 15 分钟的元素我会这样做:

foreach($timeArray AS $time){
    if($time <= $t + 15 && $time >= $t - 15){
        return $time;
    }
}

应该没有问题。我会回来的:

0415, 0420, 0430, 0440

但是如果$t = 0445$t = 0505我显然会错过05000450分别。

现在我该如何制作 $t和/或$timeArray元素表现得像时间? 0500 是在 0459 之后,而不是 0460 吗?

编辑:

  1. 欢迎逻辑黑客。不必只在 PHP 中,除非您使用 PHP 预定义函数:)
  2. 我从网络服务中获取“整数时间”。因此,如果我可以将其转换为“时间/时间戳”,那就太好了!
  3. 我的错。 4 位数字字符串。喜欢'0400'

最佳答案

这应该适合你:

首先使用 array_map() 循环遍历所有值,将所有字符串转换为时间戳。

此后,您可以简单地循环遍历您的值并检查它们是否在 15 分钟范围内。

<?php

    $t = "0430"; 
    $timeArray = array('0400', '0415', '0420', '0430', '0440', '0450', '0500', '0600');

    $timestampes = array_map("strtotime", $timeArray);
    $t = strtotime($t);

    foreach($timestampes as $time){
        if($time <= $t + (15*60) && $time >= $t - (15*60)){
            echo date("H:i:s", $time) . "<br>";
        }
    }

?>

输出:

04:15:00
04:20:00
04:30:00
04:40:00

关于php - 如何检查时间数组的单个值是否在另一个时间的 +/- 15 分钟范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30433291/

相关文章:

php - 将FFmpeg作为php中的进程运行时出现超时错误

javascript - 转换 HH :MM:SS into minute using javascript

c# - 为什么 C# 编译器不抛出 null 的逻辑比较?

sql - 如何计算SQL Server中超集中集合的现有值数

javascript - 用于从自然语言字符串中提取时间的正则表达式

c - 位屏蔽 XOR 码的逻辑

php - 将空或非空的 BLOB 列返回为 1 或 0

php - 表示分层任务/子任务的最佳方式 (MySQL/PHP)

php - 尝试按 ID 选择 "product listings"时 Codeigniter 出现奇怪问题

java - 如何在 Java 中创建调度程序类