Я новичок в Python, а также dateutil
модуль. Я передаю следующие аргументы:dateutils rrule возвращает даты, что на 2 месяца друг от друга
disclosure_start_date = resultsDict['fd_disclosure_start_date']
disclosure_end_date = datetime.datetime.now()
disclosure_dates = [dt for dt in rrule(MONTHLY, dtstart=disclosure_start_date, until=disclosure_end_date)]
Здесь , который преобразуется в DateTime является datetime.datetime(2012, 10, 31, 0, 0)
дата окончания, как сейчас.
Когда я использую:
disclosure_dates = [dt for dt in rrule(MONTHLY, dtstart=disclosure_start_date, until=disclosure_end_date)]
Я получаю даты для любой другой месяц или 2 месяца друг от друга. Результат:
>>> list(disclosure_dates)
[datetime.datetime(2012, 10, 31, 0, 0),
datetime.datetime(2012, 12, 31, 0, 0),
datetime.datetime(2013, 1, 31, 0, 0),
datetime.datetime(2013, 3, 31, 0, 0),
datetime.datetime(2013, 5, 31, 0, 0),
datetime.datetime(2013, 7, 31, 0, 0),
datetime.datetime(2013, 8, 31, 0, 0),
datetime.datetime(2013, 10, 31, 0, 0),
datetime.datetime(2013, 12, 31, 0, 0),
datetime.datetime(2014, 1, 31, 0, 0),
datetime.datetime(2014, 3, 31, 0, 0),
datetime.datetime(2014, 5, 31, 0, 0),
datetime.datetime(2014, 7, 31, 0, 0),
datetime.datetime(2014, 8, 31, 0, 0),
datetime.datetime(2014, 10, 31, 0, 0),
datetime.datetime(2014, 12, 31, 0, 0),
datetime.datetime(2015, 1, 31, 0, 0),
datetime.datetime(2015, 3, 31, 0, 0),
datetime.datetime(2015, 5, 31, 0, 0),
datetime.datetime(2015, 7, 31, 0, 0),
datetime.datetime(2015, 8, 31, 0, 0),
datetime.datetime(2015, 10, 31, 0, 0),
datetime.datetime(2015, 12, 31, 0, 0),
datetime.datetime(2016, 1, 31, 0, 0),
datetime.datetime(2016, 3, 31, 0, 0),
datetime.datetime(2016, 5, 31, 0, 0)]
Я не уверен, что я делаю неправильно. Может кто-нибудь, пожалуйста, укажет на ошибку здесь?
FYI, есть [RFC 7529] (https://tools.ietf.org/html/rfc7529), которое (помимо всего прочего) простирается 'RRULE' на режим, который падает назад к последний день месяца, если день не существует. Правило «FREQ = MONTHLY», RSCALE = GREGORIAN, SKIP = BACKWARD, BYMONTHDAY = 30' сделает это. В феврале это приведет к 28-му (или 29-м годам високосного года). К сожалению, пока не так много поддержки. – Marten
@Marten Awesome, не знал об этом. Я буду читать и внедрять в dateutil. – Paul
Спасибо, Пол. Подтвердил ваш ответ. – DrBug