Ich bin neu in Python und auch dateutil
Modul. Ich bin vorbei die folgenden Argumente:dateutils Rulle gibt Daten, die 2 Monate auseinander
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)]
Hier die zu konvertierende Zeitangabe ist datetime.datetime(2012, 10, 31, 0, 0)
Enddatum ab jetzt ist.
Wenn ich:
disclosure_dates = [dt for dt in rrule(MONTHLY, dtstart=disclosure_start_date, until=disclosure_end_date)]
ich die Daten für jeden anderen Monat oder 2 Monate auseinander zu bekommen. Das Ergebnis ist:
>>> 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)]
Ich bin mir nicht sicher, was ich falsch mache. Kann jemand bitte hier auf den Fehler hinweisen?
FYI, gibt es [RFC 7529] (https://tools.ietf.org/html/rfc7529), die (unter anderem) erstreckt 'RRULE' von einem Modus, der zurück zu den Fällen Letzter Tag eines Monats, wenn ein Tag nicht existiert. Die Regel 'FREQ = MONTHLY; RSCALE = GREGORIAN; SKIP = BACKWARD; BYMONTHDAY = 30' würde das tun. Im Februar würde dies zum 28. (oder 29. in Schaltjahren) führen. Leider gibt es dafür noch nicht viel Unterstützung. – Marten
@Marten Super, wusste nicht darüber. Ich lese und implementiere in Dateutil. – Paul
Danke Paul. Upvoted Ihre Antwort. – DrBug