一尘不染

与PHP中的日期数组相比,如何获取最接近的日期

php

这篇文章几乎为我回答了这个问题,但是我有特定的需求,没有找到我想要的东西。这就是我的经验。我无法完全绕开它,所以我真正需要的只是指向正确方向的一个点。

假设我有一个如下数组:

array(5) { 
    [0]=> "2013-02-18 05:14:54" 
    [1]=> "2013-02-12 01:44:03" 
    [2]=> "2013-02-05 16:25:07" 
    [3]=> "2013-01-29 02:00:15" 
    [4]=> "2013-01-27 18:33:45" 
}

我想有一种方法来提供日期(例如“ 2013-02-04 14:11:16”),并有一个函数确定数组中与此日期最接近的匹配项(即为“ 2013-02” -0516:25:07“)。

我将不胜感激任何提示。谢谢!:)


阅读 272

收藏
2020-05-29

共1个答案

一尘不染

我可能没有最好的命名约定,但是可以。

我计算日期数组和给定日期之间的间隔。然后,我进行排序以找到“最小”差异。

$dates = array
(
    '0'=> "2013-02-18 05:14:54",
    '1'=> "2013-02-12 01:44:03",
    '2'=> "2013-02-05 16:25:07",
    '3'=> "2013-01-29 02:00:15",
    '4'=> "2013-01-27 18:33:45"
);


function find_closest($array, $date)
{
    //$count = 0;
    foreach($array as $day)
    {
        //$interval[$count] = abs(strtotime($date) - strtotime($day));
        $interval[] = abs(strtotime($date) - strtotime($day));
        //$count++;
    }

    asort($interval);
    $closest = key($interval);

    echo $array[$closest];
}

find_closest($dates, "2013-02-18 05:14:55");
2020-05-29