用Python的datetime、timedelta、calendar实现获取日期:周初、周末、月初、月末、季初、季末、年初、年末。
import calendar
import datetime
from datetime import timedelta
now = datetime.datetime.now()
print("今天 ", now)
print('昨天 ', now - timedelta(days=1))
print('明天', now + timedelta(days=1))
print('weekday', now.weekday())
print('本周一 ', now - timedelta(days=now.weekday()))
print('本周日', now + timedelta(days=6 - now.weekday()))
print('上周一 ', now - timedelta(days=now.weekday() + 7))
print('上周日', now - timedelta(days=now.weekday() + 1))
this_month_start = datetime.datetime(now.year, now.month, 1)
print('本月第一天 ', this_month_start)
print('本月最后一天 ', datetime.datetime(now.year, now.month, calendar.monthrange(now.year, now.month)[1]))
last_month_end = this_month_start - timedelta(days=1)
print('上月第一天 ', datetime.datetime(last_month_end.year, last_month_end.month, 1))
print('上月最后一天 ', last_month_end)
month = (now.month - 1) - (now.month - 1) % 3 + 1
this_quarter_start = datetime.datetime(now.year, month, 1)
print('本季第一天 ', this_quarter_start)
print('本季最后一天 ', datetime.datetime(now.year, month + 2, calendar.monthrange(now.year, now.month)[1]))
last_quarter_end = this_quarter_start - timedelta(days=1)
print('上季第一天 ', datetime.datetime(last_quarter_end.year, last_quarter_end.month - 2, 1))
print('上季最后一天 ', last_quarter_end)
this_year_start = datetime.datetime(now.year, 1, 1)
print('本年第一天 ', this_year_start)
print('本年最后一天 ', datetime.datetime(now.year + 1, 1, 1) - timedelta(days=1))
last_year_end = this_year_start - timedelta(days=1)
print('去年第一天 ', datetime.datetime(last_year_end.year, 1, 1))
print('本年第一天 ', last_year_end)