ситуация: человек в списке выбирает любой из 7 дней недели. задача: отобразить дату с помощью php, какого числа/месяца/года будет ближайший выбранный пользователем день недели помогите пожалуйста, очень срочно надо сроки поджимают заранее благодарен
Проще некуда: PHP: <? // Получаем дату list($day, $date, $month) = explode('-', date("N-d-m")); // Вычисляем ближайший понедельник echo "Ближайший понедельник будет " . ((8 - $day) + sprintf("%d", $date)) . ".{$month}"; ?> Форматирование с помощью sprintf можно опустить. Мы это делаем, поскольку пока содержится строка 0х — ничего страшного, иначе РНР будет принимать число как восьмеричное. В данном примере можно опустить эту функцию, но в познавательных целях я её специально написал.
Алгоритм вычислений предельно просто: В неделе всего семь дней, соответственно мы получаем текущий день недели (среда = 3) и используем его для вычисления, когда снова будет первый день (понедельник = 1). Поскольку в неделе 7 дней, при вычислении 7 - 7 мы получим ноль, что недопустимо для нас (дня "ноледельник" у нас нет). Отсюда взята восьмерка. После того, как мы узнали, сколько дней осталось до понедельника, мы получаем сегодняшнее число, к которому прибавляем нужное нам количество дней. Вроде всё, всё очень просто.
2Sergey89, Apple спасибо!!1 :lol: :lol: вчера целый день кодил, мозгов уже не осталось )) тему off Можно еще проще :idea: :lol: PHP: <? echo "© [url=http://www.php.su/functions/?strtotime]http://www.php.su/functions/?strtotime[/url]"; echo strtotime("now"), "\n"; echo strtotime("10 September 2000"), "\n"; echo strtotime("+1 day"), "\n"; echo strtotime("+1 week"), "\n"; echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; // Следующий понедельник - вот что мне нужно echo strtotime("next Monday"), "\n"; // Приминение: echo date ("r", strtotime("next Monday")); // Предыдущий понедельник echo strtotime("last Monday"), "\n"; ?>
Я сторонник вычислительных решений, ведь это, всё-таки, программирование. Привычку заложил С++ и её уже никуда не деть.
) только в алгоритме Apple'а число может получиться больше 31 и месяц не изменится. Вычесления хороши тогда, когда они работают быстрее встроенных в php функций.