查找时间戳范围内的set


find set within timestamp range

我有一个包含许多时间戳的数组。我需要找到过去30分钟的所有时间戳

当前代码:

            //$history is a JSON decoded stream of arrays, of variable lengths
            $hist = array();
            foreach($history as $newday){
                    if($newday['Closed'] == $val){
                            array_push($hist, $newday['Closed']);
                    }
            }
            var_dump($hist);

示例数组数据:

array(24) {
  [0]=>
  string(22) "2016-08-18T05:24:40.47"
  [1]=>
  string(23) "2016-08-14T11:43:25.917"
  [2]=>
  string(23) "2016-08-16T08:26:39.693"
  [3]=>
  string(23) "2016-08-18T04:51:45.553"

我如何计算/找到最后30的时间戳($hist)在PHP?

DateTime类非常适合这种事情。

$timestamps = [
    "2016-08-18T05:24:40.47",
    "2016-08-14T11:43:25.917",
    "2016-08-16T08:26:39.693",
    "2016-08-18T04:51:45.553",
    "2016-08-18T16:30:45.553",
];
$timeLimit = new DateTime('now');
$timeLimit->sub(new DateInterval('PT30M'));
$recentTimestamps = [];
foreach ($timestamps as $timestamp) {
    $timestampDate = new DateTime($timestamp);
    if ($timestampDate > $timeLimit) {
        $recentTimestamps[] = $timestamp;
    }
}
var_dump($recentTimestamps);
输出:

array(1) {
  [0] =>
  string(23) "2016-08-18T16:30:45.553"
}

给你个提示:

strtotime("2016-08-18T05:24:40.47") >= strtotime('-30minutes')