Я бы сделал таблицу в БД
create table all_dates{
year int,
date_in_year date
}
залилбы туда текущий год
+ 20 лет
- 20 лет
Зачем диапазон в 41 год, достаточного одного високосного года ;-)Нужно то ведь данные из диапазона дат, в високосном году они все есть, выбирать по месяцам и дням подставлять нужный год и работать дальше. Это если табличку делать :-)

