Tek istediğiniz son ayın herhangi bir günüyse, yapabileceğiniz en basit şey gün sayısını geçerli tarihten çıkarmaktır, bu size önceki ayın son gününü verecektir.
Örneğin, herhangi bir tarihten başlayarak:
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2016, 5, 24)
Elde ettiğimiz mevcut tarihin günlerini çıkararak:
>>> last_day_previous_month = today - datetime.timedelta(days=today.day)
>>> last_day_previous_month
datetime.date(2016, 4, 30)
Bu, geçen ayın herhangi bir günündeki basitleştirilmiş ihtiyacınız için yeterlidir.
Ama artık buna sahip olduğunuza göre, başladığınız gün de dahil olmak üzere ayın herhangi bir gününü de alabilirsiniz (yani aşağı yukarı bir ay çıkarmakla aynıdır):
>>> same_day_last_month = last_day_previous_month.replace(day=today.day)
>>> same_day_last_month
datetime.date(2016, 4, 24)
Elbette, 30 günlük bir ayın 31'ine veya Şubat ayından itibaren eksik olan günlere (ve artık yıllara dikkat etmenize) dikkat etmeniz gerekir, ancak bunu yapmak da kolaydır:
>>> a_date = datetime.date(2016, 3, 31)
>>> last_day_previous_month = a_date - datetime.timedelta(days=a_date.day)
>>> a_date_minus_month = (
... last_day_previous_month.replace(day=a_date.day)
... if a_date.day < last_day_previous_month.day
... else last_day_previous_month
... )
>>> a_date_minus_month
datetime.date(2016, 2, 29)
((date.month+delta-1) % 12)+1çalışır veif not m: m = 12kutunun çıkarılması anlamına gelir