Всем доброго времени суток! Есть вот такой фоарос на PHP есть массив дат, предположим такой: PHP: <?php $dates = array("2012-05-31", "2012-06-05", "2012-06-07", "2012-06-12"); // Все даты идут на возростание $input_date = strtotime("2012-06-10"); // Введенная дата ?> Значит вот такой вопрос. Есть переменная $input_date. Задача такова, что нужно найти ближайшую дату в массиве на убывание.
Копай в сторону http://www.php.su/functions/?cat=datetime Алгоритм до нельзя прост, сравнив метки вычитанием и найдя наименьшее число получим ближайщую соседнюю дату. Как вариант можно сравнивать и текстовые поля (строки) (http://www.php.su/functions/?strcmp) но обламаемся если даты представлены в различных форматах, так что правильнее время привести к меткам в секундах от начала эпохи.
-=lebed=-, был я тут. К сожалению я не понимаю(( ведь если введенная дата не ровняеться текущей, тонадо вчесть 1 день из введенной, и опять сравнивать. Всетаки подскажите как правильно условие построить.
PHP: <?php $dates = array("2012-05-31", "2012-06-05", "2012-06-07", "2012-06-12"); // Все даты идут на возростание $input_date = strtotime("2012-06-10"); // Введенная дата $result = ""; foreach ($dates as $date) { if (strtotime($date) > $input_date) break; $result = $date; } echo $result; ?>
еще такой вопрос. А как к указанной дате прибавить месяц? upd. Разобрался сам)) вот код: PHP: function addDate($date, $d, $m, $y) { $day = date("d", $date); $month = date("m", $date); $year = date("Y", $date); $date_str = mktime(0, 0, 0, $month+$m, $day+$d, $year+$y); $result = date('Y-m-d', $date_str); return $result; }