【问题标题】:find the most recent value between some date in php在php中查找某个日期之间的最新值
【发布时间】:2016-03-30 22:08:39
【问题描述】:

我有一个包含这些值的数组,并且必须找到其中最新的

Array (  
    [0] => stdClass Object ( 
        [createdDate] => 2016/03/30 22:27:26:000 
        [createdDateUTC] => 2016-03-30T21:27:26 
        [id]=>1
    ), 
    [1] => stdClass Object ( 
        [createdDate] => 2016/03/30 22:27:26:000 
        [createdDateUTC] => 2016-03-30T21:27:26
        [id]=>2 
    )
)

从现在到现在,我只需要获取一个 id - 1 小时。

编辑: 感谢@evan-taylor,这是一个解决方案

$dates_arr=array(  
    array( 
        'createdDate' => '2016/03/30 22:27:26:000', 
        'createdDateUTC' => '2016-03-30T20:27:26',
        'id'=>1
    ), 
    array( 
        'createdDate' => '2016/03/30 22:27:26:000', 
        'createdDateUTC' => '2016-03-30T21:27:26',
        'id'=>2 
    )
);
$most_recent_time = 0;
$most_recent_id = NULL;
foreach($dates_arr as $date_obj){
    $parsed_time = strtotime($date_obj['createdDateUTC']);
    if($parsed_time > $most_recent_time && ($parsed_time >= (time() - 3600))){
        $most_recent_time = $parsed_time;
        $most_recent_id = $date_obj['id'];
    }
}
echo $most_recent_id;

【问题讨论】:

标签: php date datetime utc


【解决方案1】:

这样的事情可能对你有用。查看函数strtotime

$most_recent_time = 0;
$most_recent_id = NULL;
foreach($dates_arr as $date_obj){
    $parsed_time = strtotime($date_obj->createdDateUTC);
    if($parsed_time > $most_recent_time && ($parsed_time >= (time() - 3600)){
        $most_recent_time = $parsed_time
        $most_recent_id = $date_obj->id;
    }
}

尚未测试此代码,但$most_recent_id 应包含不超过 1 小时前的最新时间戳的 ID,如果不存在则 NULL

【讨论】:

  • 是的,现在我发布您的解决方案是正确的,谢谢
猜你喜欢
  • 2021-04-10
  • 2021-04-16
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 2020-07-19
相关资源
最近更新 更多