Поиск ближайшей даты из массива дат

25 Февраля 2021 17:05

Данная функция поможет в решении задач, связанных с датами. Например, когда мы работаем с массивом дат рабочих дней, а вычисления нужны по типу «год назад», «месяц назад» и т.д. Дата, скажем, «год назад» может быть выходным днем, но нам нужно получить предыдущий рабочий день от выходного.


function findClosestDate($dates, $find_date) {
  $newDates = [];

  foreach($dates as $date)
  {
    $newDates[] = strtotime($date);
  }

  arsort($newDates);
  foreach ($newDates as $date)
  {
    if ($date <= strtotime($find_date))
      return $date;
  }
}

$dates = array
(
    '0' => "2013-01-17 05:14:54",
    '1' => "2013-01-16 01:44:03",
    '2' => "2013-01-13 16:25:07",
    '3' => "2013-01-12 02:00:15",
    '4' => "2013-01-11 18:33:45"
);
$values = findClosestDate($dates, date('2013-01-15 14:11:16'));
echo date('Y-m-d H:i:s', $values);