#coding=utf-8
import datetime
from datetime import timedelta
now = datetime.datetime.now()
#今天
today = now
#昨天
yesterday = now - timedelta(days=1)
#明天
tomorrow = now + timedelta(days=1)<br><br>#当前季度
now_quarter = now.month / 3 if now.month % 3 == 0 else now.month / 3 + 1
#本周第一天和最后一天
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)
例子1:
def get_this_date_and_last_date(date_type='day'):
"""
:param date_type: 周 月 季 年
{'last_date_start': '2018-01-01 00:00:00',
'last_date_end': '2018-12-31 23:59:59',
'this_date_start': '2019-01-01 00:00:00',
'this_date_end': '2019-12-31 23:59:59'}
:return:
"""
# 今天
now = datetime.datetime.now()
date_dict = dict()
if date_type == 'day':
this_day = datetime.date.today()
last_day = datetime.date.today()+ datetime.timedelta(days=-1)
date_dict.update({"this_date_start": this_day,
"this_date_end": this_day,
"last_date_start": last_day,
"last_date_end": last_day})
if date_type == 'week':
# 本周第一天和最后一天
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)
date_dict.update({"this_date_start": this_week_start,
"this_date_end": this_week_end,
"last_date_start": last_week_start,
"last_date_end": last_week_end})
if date_type == 'month':
# 本月第一天和最后一天
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)
date_dict.update({"this_date_start": this_month_start,
"this_date_end": this_month_end,
"last_date_start": last_month_start,
"last_date_end": last_month_end})
if date_type == 'quarter':
# 本季第一天和最后一天
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)
date_dict.update({"this_date_start": this_quarter_start,
"this_date_end": this_quarter_end,
"last_date_start": last_quarter_start,
"last_date_end": last_quarter_end})
if date_type == 'year':
# 本年第一天和最后一天
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)
date_dict.update({"this_date_start": this_year_start,
"this_date_end": this_year_end,
"last_date_start": last_year_start,
"last_date_end": last_year_end})
date_dict.update({"this_date_start": date_dict.get("this_date_start").strftime('%Y-%m-%d 00:00:00'),
"this_date_end": date_dict.get("this_date_end").strftime('%Y-%m-%d 23:59:59'),
"last_date_start": date_dict.get("last_date_start").strftime('%Y-%m-%d 00:00:00'),
"last_date_end": date_dict.get("last_date_end").strftime('%Y-%m-%d 23:59:59')})
return date_dict
def get_mar12_year_month(num=12):
"""
:param num: 12 前十二个的年份-月份{year_month: {start_date:'', end_date: ''}}
num 最大值不能超过 13
:return:
"""
# 得到现在的时间 得到now等于2016年9月25日
now = datetime.datetime.now()
# 得到今年的的时间 (年份) 得到的today_year等于2016年
today_year = now.year
# 今年的时间减去1,得到去年的时间。last_year等于2015
last_year = int(now.year) - 1
# 得到今年的每个月的时间。today_year_months等于1 2 3 4 5 6 7 8 9,
today_year_months = range(1, now.month + 1)
# 得到去年的每个月的时间 last_year_months 等于10 11 12
if num == 13:
last_year_months = range(now.month, num)
else:
last_year_months = range(now.month + 1, num + 1)
# 定义列表去年的数据
data_list_lasts = list()
# 通过for循环,得到去年的时间夹月份的列表
# 先遍历去年每个月的列表
for last_year_month in last_year_months:
# 定义date_list 去年加上去年的每个月
if len(str(last_year_month)) == 1:
last_year_month = '0%s' % last_year_month
MonthFirstDayAndLastDay = getMonthFirstDayAndLastDay(last_year, last_year_month)
date_list = '%s-%s' % (last_year, last_year_month)
# 通过函数append,得到去年的列表
data_list_lasts.append({'date': date_list, 'content': MonthFirstDayAndLastDay})
data_list_todays = list()
# 通过for循环,得到今年的时间夹月份的列表
# 先遍历今年每个月的列表
for today_year_month in today_year_months:
# 定义date_list 去年加上今年的每个月
if len(str(today_year_month)) == 1:
today_year_month = '0%s' % today_year_month
MonthFirstDayAndLastDay = getMonthFirstDayAndLastDay(today_year, today_year_month)
date_list = '%s-%s' % (today_year, today_year_month)
# 通过函数append,得到今年的列表
data_list_todays.append({'date': date_list, 'content': MonthFirstDayAndLastDay})
# 去年的时间数据加上今年的时间数据得到年月时间列表
data_year_month = data_list_lasts + data_list_todays
return data_year_month
def get_mar12_year_month_day(num=12):
date_list = list()
i = 0
while i < num:
date_list.append({'date': get_day_delta(-i).strftime('%Y-%m-%d'), 'content': {
'start_date': get_day_delta(-i).strftime('%Y-%m-%d') + ' 00:00:00',
'end_date': get_day_delta(-i).strftime('%Y-%m-%d') + ' 23:59:00'}})
i += 1
return list(reversed(date_list))
def get_mar12_year(num=7):
year = datetime.date.today().year
year_dict = {'date': str(year), 'content': {"start_date": str(year) + '-01-01 00:00:00',
"end_date": str(year) + '-12-31 23:59:59'}}
date_list = [year_dict]
i = 1
while i < num:
date_list.append(
{'date': str(int(year) - i), 'content': {"start_date": str(int(year) - i) + '-01-01 00:00:00',
"end_date": str(int(year) - i) + '-12-31 23:59:59'}})
i += 1
return list(reversed(date_list))