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

How to check a time array if the single values are in +/- 15 minute range of another time

我应该怎么做才能使 4 位数字 integer/string 表现(而不是看起来)像时间?

考虑这段代码:

$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 and/or $timeArray 元素表现得像时间? 0500 在 0459 之后,而不是 0460?

编辑:

  1. 欢迎逻辑黑客。不必只在 PHP 中,除非你正在使用 PHP 预定义函数 :)
  2. 我正在从网络服务中获取 "integer time"。所以如果我能把它转换成 "Time/TimeStamp" 那也太棒了!
  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