获取当日、本周、本月、昨日、上周、上月时间
今天给大家分享下使用python的datetime时间模块封装几个常用的时间函数,比如获取今天、当日、本周、本月、上周、上月时间,返回值是一个字典,其中包括年份、月份、开始时间、结束时间、特定日期。
如果大家觉得文章有用,请点赞收藏哦。
简单介绍下 datetime,它是基于time进行了封装,提供了更多的实用的函数,datetime的接口更加的直观,更容易调用。datetime:同时有时间与日期
timedelta:表示时间间隔,即两个时间点的间隔:主要用于计算时间的跨度
tzinfo: 时区相关的信息
date : 只关注日期
时间格式对照表
%a 本地的星期缩写%A 本地的星期全称%b 本地的月份缩写%B 本地的月份全称%c 本地的合适的日期和时间表示形式%d 月份中的第几天,类型为decimal number(10进制数字),范围[01,31]%f 微秒,类型为decimal number,范围[0,999999],Python 2.6新增%H 小时(24进制),类型为decimal number,范围[00,23]%I 小时(12进制),类型为decimal number,范围[01,12]%j 一年中的第几天,类型为decimal number,范围[001,366]%m 月份,类型为decimal number,范围[01,12]%M 分钟,类型为decimal number,范围[00,59]%p 本地的上午或下午的表示(AM或PM),只当设置为%I(12进制)时才有效%S 秒钟,类型为decimal number,范围[00,61](60和61是为了处理闰秒)%U 一年中的第几周(以星期日为一周的开始),类型为decimal number,范围[00,53]。在度过新年时,直到一周的全部7天都在该年中时,才计算为第0周。只当指定了年份才有效。%w 星期,类型为decimal number,范围[0,6],0为星期日%W 一年中的第几周(以星期一为一周的开始),类型为decimal number,范围[00,53]。在度过新年时,直到一周的全部7天都在该年中时,才计算为第0周。只当指定了年份才有效。%x 本地的合适的日期表示形式%X 本地的合适的时间表示形式%y 去掉世纪的年份数,类型为decimal number,范围[00,99]%Y 带有世纪的年份数,类型为decimal number%Z 时区名字(不存在时区时为空)%% 代表转义的"%"字符 具体代码import datetimedef get_current_day(): ''' 当日 :return: ''' end_time = datetime.date.today() year = end_time.strftime("%Y") month = end_time.strftime("%m") day = end_time.strftime("%d") params = { "year": year, "month": month, "day": day, "current_date": f"{year}-{month}-{day}" } return paramsdef get_current_week(): ''' 当周 :return: ''' start_time, end_time = datetime.date.today(), datetime.date.today() one_day = datetime.timedelta(days=1) while start_time.weekday() != 0: start_time -= one_day while end_time.weekday() != 6: end_time += one_day start_year = start_time.strftime("%Y") start_month = start_time.strftime("%m") start_day = start_time.strftime("%d") year = end_time.strftime("%Y") month = end_time.strftime("%m") end_day = end_time.strftime("%d") params = { "start_year": start_year, # 开始年份 "start_month": start_month, # 开始月份 "start_day": start_day, # 开始日期 "start_date": f"{start_year}-{start_month}-{start_day}", # 开始日期 "end_year": year, # 结束年份 "end_month": month, # 结束月份 "end_day": end_day, # 结束日期 "end_date": f"{year}-{month}-{end_day}" # 结束日期 } return paramsdef get_current_month(): ''' 当月 当前时间的月份首日与最后一天 :return: ''' today = datetime.date.today() year, month = today.year, today.month end = datetime.datetime(year, month + 1, 1) - datetime.timedelta(days=1) params = { "year": year, "month": month, "start_day": "01", "start_date": f"{year}-{month}-01", "end_day": f"{end.day}", "end_date": f"{year}-{month}-{end.day}", } return paramsdef get_last_day(): ''' 昨天 :return: ''' d = datetime.date.today() one_day = datetime.timedelta(days=1) end_time = d - one_day year = end_time.strftime("%Y") month = end_time.strftime("%m") day = end_time.strftime("%d") params = { "year": year, "month": month, "day": day, "last_date": f"{year}-{month}-{day}" } return paramsdef get_last_week(): ''' 上周 :return: ''' d = datetime.date.today() days_count = datetime.timedelta(days=d.isoweekday()) end_time = d - days_count six_days = datetime.timedelta(days=6) start_time = end_time - six_days start_year = start_time.strftime("%Y") start_month = start_time.strftime("%m") start_day = start_time.strftime("%d") year = end_time.strftime("%Y") month = end_time.strftime("%m") end_day = end_time.strftime("%d") params = { "start_year": start_year, "start_month": start_month, "start_day": start_day, "start_date": f"{start_year}-{start_month}-{start_day}", "year": year, "month": month, "end_day": end_day, "end_date": f"{year}-{month}-{end_day}", } return params# 上月def get_last_month(): d = datetime.date.today() days_count = datetime.timedelta(days=d.day) end_time = d - days_count year = end_time.strftime("%Y") month = end_time.strftime("%m") params = { "year": year, "month": month, "start_day": "01", "start_date": f"{year}-{month}-01", "end_day": f"{end_time.day}", "end_date": f"{year}-{month}-{end_time.day}", } return paramsif __name__ == '__main__': print('当日', get_current_day()) print('当周', get_current_week()) print('当月', get_current_month()) print('昨日', get_last_day()) print('上周', get_last_week()) print('上月', get_last_month())