Python语言精确地从日期中减去月份
示例
使用calendar模块
import calendar
from datetime import date
def monthdelta(date, delta):
m, y = (date.month+delta) % 12,date.year+ ((date.month)+delta-1) //12
if not m: m = 12
d = min(date.day, calendar.monthrange(y, m)[1])
return date.replace(day=d,month=m, year=y)
next_month = monthdelta(date.today(), 1) #datetime.date(2016,10,23)使用dateutils模块
import datetime
import dateutil.relativedelta
d = datetime.datetime.strptime("2013-03-31", "%Y-%m-%d")
d2 = d - dateutil.relativedelta.relativedelta(months=1) #datetime.datetime(2013,2,28,0,0)