Используйте отличный модуль dateutil
.Это очень легко сделать это и другие вычисления даты с этим.
Некоторые примеры:
import datetime
from dateutil import rrule
today = datetime.date.today()
Первая пятница месяца за 10 месяцев:
print list(rrule.rrule(rrule.MONTHLY, count=10, byweekday=rrule.FR(1),
dtstart=today)))
результаты:
[datetime.datetime(2010, 8, 2, 0, 0),
datetime.datetime(2010, 9, 6, 0, 0),
datetime.datetime(2010, 10, 4, 0, 0),
datetime.datetime(2010, 11, 1, 0, 0),
datetime.datetime(2010, 12, 6, 0, 0),
datetime.datetime(2011, 1, 3, 0, 0),
datetime.datetime(2011, 2, 7, 0, 0),
datetime.datetime(2011, 3, 7, 0, 0),
datetime.datetime(2011, 4, 4, 0, 0),
datetime.datetime(2011, 5, 2, 0, 0)]
Первый понедельникгода, за 3 года:
print list(rrule.rrule(rrule.YEARLY, count=3, byweekday=rrule.MO(1),
dtstart=datetime.date.today()))
Результаты:
[datetime.datetime(2011, 1, 3, 0, 0),
datetime.datetime(2012, 1, 2, 0, 0),
datetime.datetime(2013, 1, 7, 0, 0)]