Создание выпадающих меню на основе текущей даты

Задача
Необходимо создать ряд выпадающих меню, которые автоматически привязываются текущей дате.

Решение
Для определения текущего времени во временной зоне веб-сервера вызовите функцию date() и выполните цикл по дням с помощью функции mktime().

Следующий фрагмент программы генерирует значения элемента option для текущего дня и последующих шести дней. В данном случае текущий день – 1 января 2002 года.

list($hour, $minute, $second, $month, $day, $year) =
split(':', date('h:i:s:m:d:Y'));
// печатаем последовательность дней одной недели
for ($i = 0; $i < 7; ++$i) {
$timestamp = mktime($hour, $minute, $second, $month, $day + $i, $year);
$date = date("D, F j, Y", $timestamp);
print "\n";
}







Обсуждение
В решении мы устанавливаем атрибут value для каждой даты в ее UNIX-представлении временной метки, поскольку считаем это более простым способом для нашей программы.


Конечно, вы можете использовать любой формат, который вы находите более удобным и подходящим.

Не поддавайтесь искушению исключить вызов функции mktime(); даты и время не настолько совместимы, как вы думаете. В зависимости от ваших действий, можно получить не тот результат, на который вы рассчитываете. Например:

$timestamp = mktime(0, 0, 0, 10, 24, 2002); // October 24, 2002
$one_day = 60 * 60 * 24; // number of seconds in a day
// печатаем последовательность дней одной недели
for ($i = 0; $i < 7; ++$i) {
$date = date("D, F j, Y", $timestamp);
print "";
$timestamp += $one_day;
}








Этот сценарий должен напечатать месяц, день и год для семидневного периода, начиная с 24 октября 2002 года.


Однако он работает не так, как ожидалось. Почему здесь два воскресенья 27 октября 2002 года? Ответ: переход на летнее время (DST). Утверждение, что количество секунд в дне постоянно, неверное; в действительности почти наверняка оно изменится.

Хуже всего то, что если вы не находитесь по времени рядом со сменой дат, то обязательно пропустите эту ошибку при тестировании.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Защита от многократной отправки одной и той же формы
Использование элементов формы с несколькими вариантами значений
Кэширование запросов и результатов
Обработка внешних переменных с точками в именах
Обработка загруженных файлов

Вернуться в раздел: PHP / 9. Формы