1. 获取今天、昨天、明天
import datetime
from datetime import timedelta
now = datetime.datetime.now()
today = now
yesterday = now - timedelta(days=1)
tomorrow = now + timedelta(days=1)
2. 获取本周、上周、本月、上月、本季,上季、本年、上年
this_week_start = now - timedelta(days=now.weekday())
this_week_end = now + timedelta(days=6-now.weekday())
last_week_start = now - timedelta(days=now.weekday()+7)
last_week_end = now - timedelta(days=now.weekday()+1)
this_month_start = datetime.datetime(now.year, now.month, 1)
this_month_end = datetime.datetime(now.year, now.month + 1, 1) - timedelta(days=1)
last_month_end = this_month_start - timedelta(days=1)
last_month_start = datetime.datetime(last_month_end.year, last_month_end.month, 1)
month = (now.month - 1) - (now.month - 1) % 3 + 1
this_quarter_start = datetime.datetime(now.year, month, 1)
this_quarter_end = datetime.datetime(now.year, month + 3, 1) - timedelta(days=1)
last_quarter_end = this_quarter_start - timedelta(days=1)
last_quarter_start = datetime.datetime(last_quarter_end.year, last_quarter_end.month - 2, 1)
this_year_start = datetime.datetime(now.year, 1, 1)
this_year_end = datetime.datetime(now.year + 1, 1, 1) - timedelta(days=1)
last_year_end = this_year_start - timedelta(days=1)
last_year_start = datetime.datetime(last_year_end.year, 1, 1)
3. 另外一种写法:各种日期
today = datetime.date.today()
quarter = (today.month-1) // 3 + 1
'{}Q{}'.format(today.year, quarter)
today = datetime.date.today()
today.month
today = datetime.date.today()
datetime.datetime.strftime(today, "%Y-%m")
today = datetime.date.today()
last_month = today + datetime.timedelta(days=-today.day)
datetime.datetime.strftime(last_month,"%Y-%m")
from dateutil.relativedelta import relativedelta
today = datetime.date.today()
last_2_month = today + relativedelta(months=-2)
datetime.datetime.strftime(last_2_month, "%Y-%m")
today = datetime.date.today()
str(today.year) +'-01'
today = datetime.date.today()
today.day
today.isoformat()
today = datetime.date.today()
yesterday = today + datetime.timedelta(days=-1)
yesterday.isoformat()
today = datetime.date.today()
yesterday = today + datetime.timedelta(days=1)
yesterday.isoformat()
today = datetime.date.today()
week_start_day = today - datetime.timedelta(days=today.weekday())
week_start_day.isoformat()
today = datetime.date.today()
week_end_day = today + datetime.timedelta(days=6-today.weekday())
week_end_day.isoformat()
today = datetime.date.today()
month_start_day = today - datetime.timedelta(days=today.day-1)
month_start_day.isoformat()
from dateutil.relativedelta import relativedelta
today = datetime.date.today()
month_end_day = (today + datetime.timedelta(days=-today.day+1)) + relativedelta(months=1,days=-1)
month_end_day.isoformat()
today = datetime.date.today()
quarter_start_day = datetime.date(today.year,today.month - (today.month - 1) % 3, 1)
quarter_start_day.isoformat()
from dateutil.relativedelta import relativedelta
today = datetime.date.today()
quarter_end_day = datetime.date(today.year,today.month - (today.month - 1) % 3 +2, 1) + relativedelta(months=1,days=-1)
quarter_end_day.isoformat()
today = datetime.date.today()
year_start_day = datetime.date(today.year, 1, 1)
year_start_day.isoformat()
today = datetime.date.today()
year_end_day = datetime.date(today.year+1, 1, 1) - datetime.timedelta(days=1)
year_end_day.isoformat()
4. 另一种写法:获取上一季度最后一天
from datetime import datetime
def getlastseason(today):
today = datetime.strptime(today, '%Y%m%d')
quarter = (today.month - 1) / 3 + 1
if quarter == 1:
return datetime(today.year - 1, 12, 31).strftime('%Y%m%d')
elif quarter == 2:
return datetime(today.year, 3, 31).strftime('%Y%m%d')
elif quarter == 3:
return datetime(today.year, 6, 30).strftime('%Y%m%d')
else:
return datetime(today.year, 9, 30).strftime('%Y%m%d')