stopkran
Дилетант
В моей CMS-ке есть данные для календаря праздников на все 12 месяцев. Ну, не вообще всех праздников в мире, а так, основных: Новый год, день Труда, день Смеха... Данные хранятся приблизительно так: 2012-01-01 => 'Новый год'. Как поступить 1 января 2013 года: заменить все '2012' на '2013'?
Но тогда возникает проблема праздников, которые празднуют, например, "в последнее воскресенье августа". Кто-нибудь сталкивался с такой проблемой? Я, конечно, её для себя решил, но решение выглядит как-то грустно, неуклюже. Это так и должно быть?
И другой вопрос. Переводить даты один раз в год кажется недостаточным. Например, пользователь захотел в декабре посмотреть праздники на январь или даже февраль. Значит, в календаре всегда должны быть даты на два-три месяца вперёд и назад. То есть даты лучше переводить, например, каждые два месяца. Ну, может и реже. Но по какому событию?
Заходить (администратору) в админку с определённой периодичностью и запускать скрипт передвижения дат? Или уже вообще оставить поле "Дата" пустым, а хранить месяц и день (или алгоритм типа "последнее воскресенье") и вычислять дату каждый раз для периода, который выбрал пользователь?..
Но тогда возникает проблема праздников, которые празднуют, например, "в последнее воскресенье августа". Кто-нибудь сталкивался с такой проблемой? Я, конечно, её для себя решил, но решение выглядит как-то грустно, неуклюже. Это так и должно быть?
И другой вопрос. Переводить даты один раз в год кажется недостаточным. Например, пользователь захотел в декабре посмотреть праздники на январь или даже февраль. Значит, в календаре всегда должны быть даты на два-три месяца вперёд и назад. То есть даты лучше переводить, например, каждые два месяца. Ну, может и реже. Но по какому событию?
Заходить (администратору) в админку с определённой периодичностью и запускать скрипт передвижения дат? Или уже вообще оставить поле "Дата" пустым, а хранить месяц и день (или алгоритм типа "последнее воскресенье") и вычислять дату каждый раз для периода, который выбрал пользователь?..