在工作中,经常要出一些分析报表,常见的有月报、周报、日报,所以经常需要自动获取上月、上周、昨天的时间,封装常用的方法,可以简化脚本。
主要是使用相对的时间,这就可以使用 dateutil.relativedelta
,需要注意的一点是月末的日期,因为每个月的天数是不一样的,这个时候在 relativedelta 指定 day=31 就可以自动适配当月最大天数。
from dateutil import relativedelta
from datetime import date
def getLastDay():
return date.today() + relativedelta.relativedelta(days=-1)
def getStartDayOfLastWeek():
return date.today() + relativedelta.relativedelta(weekday=relativedelta.MO(-2))
def getEndDayOfLastWeek():
return date.today() + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
def getStartDayOfLastMonth():
return date.today() + relativedelta.relativedelta(months=-1, day=1)
def getEndDayOfLastMonth():
return date.today() + relativedelta.relativedelta(months=-1, day=31)