python获取一个月之前日期_Python使用datetime,dateutil来获取指定日期的日期,或者指定月份或任何日期之前或之后的任何月份的日期,python,datetimedateutil...

常用时间处理逻辑

1,获取指定日期或指定月份前后n个月日期

from datetime import datetime, timedelta

from dateutil.relativedelta import relativedelta

# 指定日期

date = "20200129"

add_month = (datetime.strptime(date, "%Y%m%d") + relativedelta(months=+1)).strftime("%Y%m%d")

reduce_month = (datetime.strptime(date, "%Y%m%d") - relativedelta(months=+1)).strftime("%Y%m%d")

# 指定月份

date = "202001"

add_month = (datetime.strptime(date, "%Y%m") + relativedelta(months=+1)).strftime("%Y%m")

reduce_month = (datetime.strptime(date, "%Y%m") - relativedelta(months=+1)).strftime("%Y%m")

2,获取指定日期上n个月和下n个月 月初或月末日期

from datetime import datetime, timedelta

from dateutil.relativedelta import relativedelta

# 上n个月

date = "20200129"

tmp_date = datetime.strptime(date, "%Y%m%d").strftime("%Y%m01")

month_end = (datetime.strptime(tmp_date, "%Y%m%d") - timedelta(days=1)).strftime("%Y%m%d")

month_start = datetime.strptime(month_end, "%Y%m%d") .strftime("%Y%m01")

month_start = (datetime.strptime(tmp_date, "%Y%m%d") - relativedelta(months=+1)).strftime("%Y%m%d")

# 下n个月

date = "20200129"

tmp_date = (datetime.strptime(date, "%Y%m%d") + relativedelta(months=+1)).strftime("%Y%m01")

month_start = tmp_date

tmp_date = (datetime.strptime(date, "%Y%m%d") + relativedelta(months=+2)).strftime("%Y%m01")

month_end = (datetime.strptime(tmp_date, "%Y%m%d") - timedelta(days=1)).strftime("%Y%m%d")

3,获取指定日期前后任意天日期

from datetime import datetime, timedelta

date = "20200129"

# 前任意天

add_date = (datetime.strptime(tmp_date, "%Y%m%d") - timedelta(days=1)).strftime("%Y%m%d")

# 后任意天

reduce_date = (datetime.strptime(tmp_date, "%Y%m%d") + timedelta(days=1)).strftime("%Y%m%d")

备注:days可以替换为 seconds、microseconds、milliseconds、 minutes、hours、 weeks 用法相同