यदि आप चाहते हैं कि अंतिम महीने में कोई भी दिन हो, तो आप जो सबसे सरल काम कर सकते हैं, वह वर्तमान तिथि से दिनों की संख्या को घटा देना है, जो आपको पिछले महीने के अंतिम दिन देगा।
उदाहरण के लिए, किसी भी तारीख से शुरू:
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2016, 5, 24)
वर्तमान तिथि के दिनों को घटाकर हम प्राप्त करते हैं:
>>> last_day_previous_month = today - datetime.timedelta(days=today.day)
>>> last_day_previous_month
datetime.date(2016, 4, 30)
यह पिछले महीने में किसी भी दिन की आपकी सरल आवश्यकता के लिए पर्याप्त है।
लेकिन अब जब आपके पास यह है, तो आप महीने में किसी भी दिन भी प्राप्त कर सकते हैं, उसी दिन से, जिस दिन आपने शुरुआत की थी (यानी कम या ज्यादा एक महीने को घटाते हुए):
>>> same_day_last_month = last_day_previous_month.replace(day=today.day)
>>> same_day_last_month
datetime.date(2016, 4, 24)
बेशक, आपको 30 दिन के महीने में 31 तारीख या फरवरी से गायब होने वाले दिनों से सावधान रहने की जरूरत है (और लीप वर्ष का ध्यान रखें), लेकिन ऐसा करना भी आसान है:
>>> 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काम है और इसका मतलबif not m: m = 12निकाला जा सकता है