python date of the previous month
Solution 1:
datetime and the datetime.timedelta classes are your friend.
- find today.
- use that to find the first day of this month.
- use timedelta to backup a single day, to the last day of the previous month.
- print the YYYYMM string you're looking for.
Like this:
import datetime
today = datetime.date.today()
first = today.replace(day=1)
lastMonth = first - datetime.timedelta(days=1)
print(lastMonth.strftime("%Y%m"))
201202
is printed.
Solution 2:
You should use dateutil. With that, you can use relativedelta, it's an improved version of timedelta.
>>> import datetime
>>> import dateutil.relativedelta
>>> now = datetime.datetime.now()
>>> print now
2012-03-15 12:33:04.281248
>>> print now + dateutil.relativedelta.relativedelta(months=-1)
2012-02-15 12:33:04.281248
Solution 3:
from datetime import date, timedelta
first_day_of_current_month = date.today().replace(day=1)
last_day_of_previous_month = first_day_of_current_month - timedelta(days=1)
print "Previous month:", last_day_of_previous_month.month
Or:
from datetime import date, timedelta
prev = date.today().replace(day=1) - timedelta(days=1)
print prev.month