在时间戳范围内查找设置

时间:2016-08-18 15:34:19

标签: php arrays time

我有一个包含大量时间戳的数组。 我需要找到最后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"

如何在PHP中计算/查找最后30个时间戳($ hist)?

2 个答案:

答案 0 :(得分:0)

在这里给你一个提示:

.keystore

试一试。

答案 1 :(得分:0)

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"
}