In this post, there is an answer that shows the following code:
<?php
$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 closest($dates, $findate)
{
$newDates = array();
foreach($dates as $date)
{
$newDates[] = strtotime($date);
}
echo "<pre>";
print_r($newDates);
echo "</pre>";
sort($newDates);
foreach ($newDates as $a)
{
if ($a >= strtotime($findate))
return $a;
}
return end($newDates);
}
$values = closest($dates, date('2013-02-04 14:11:16'));
echo date('Y-m-d h:i:s', $values);
To calculate nearest key
of given date value
$arr =['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"];
$date = "2013-02-04 14:11:16";
$near = "";
$lowest = 0;
foreach($arr as $key=>$value){
$diff = abs(strtotime($date)-strtotime($value));
if(!$lowest || $diff < $lowest) {
$near = $key;
$lowest = $diff;
}
}
print_r("Nearest key is : $near");
Live demo : https://eval.in/872057
Output will be For
2013-02-04
=> 2
// its near to date 2013-02-05
2013-02-06
=> 2
// again its near to date 2013-02-05