当前位置: 首页 > 后端技术 > Python

python中周历与时间的相互转换

时间:2023-03-26 01:30:57 Python

python中周历与时间的相互转换周历(ISO国际标准)在线周历介绍(2022)基本介绍开发过程中,有些总结咨询需要以周为单位进行统计,下面介绍一下如何转换彼此。使用datetime类格式化转换strftime方法可以将时间转换为字符串strptime方法可以将字符串转换为时间"%Y,%W,%w","%Y"代表年,"%W"代表周,"%w"表示星期几fromdatetimeimportdatetime#time-to-weekcalendara=datetime.now().strftime("%Y,%W,%w")print(a)#2022,28,3#周历转时间a=datetime.strptime("2022,12,3","%Y,%W,%w")print(a)#2022-03-2300:00:00上面的问题看起来like问题解决了,但是问题出在年初和年末。例如2021年12月、2022年1月,2021年12月的周数为周一、周二、周三、周四、周五、周六、周日、周日481234549678910111250131415161718195120212223242526522728293031,2022年1月的周数为周二星期四星期三52121345678921011213141516317181920212223424252627282930531fromdatetimeimportdatetimea=datetime.strptime("2021-12-31","%Y-%m-%d")print(a.strftime("%Y,%W,%w"))#2021,52,5a=datetime.strptime("2022-01-01","%Y-%m-%d")print(a.strftime("%Y,%W,%w"))#2022,00,6按照ISO标准,2022年1月1日应该归类为2021年的最后一周,使用strftime方法格式化为2022年的第0个月,所以这是使用isocalendar将日期转换为星期几的正确方式)time_list=["2021-12-30","2021-12-31","2022-01-01","2022-01-02","2022-01-03",]foriintime_list:t=str_to_time(i)iso=t.isocalendar()打印(i,">",f"{iso.year},{iso.week},{iso.weekday}")#2021-12-30>2021,52,4#2021-12-31>2021,52,5#2022-01-01>2021,52,6#2022-01-02>2021,52,7#2022-01-03>2022,1,1使用fromisocalendar将周历转换为datefromdatetimeimportdatetimetime_list=((2021,52,4),(2021,52,5),(2021,52,6),(2021,52,7),(2022,1,1),)foryear,week,weekdayintime_list:t=datetime.fromisocalendar(year,week,weekday)print(f"{year},{week},{weekday}",">",t)#2021,52,4>2021-12-3000:00:00#2021,52,5>2021-12-3100:00:00#2021,52,6>2022-01-0100:00:00#2021,52,7>2022-01-0200:00:00#2022,1,1>2022-01-0300:00:00pythoncodefromdatetimeimportdatetimedefdatetime_to_isoweek(datetime_:datetime)->tuple[int,int,int]:"""时间转换为iso周历Args:datetime_(datetime):timeReturns:tuple[int,int,int]:year,week,weekday"""iso=datetime_.isocalendar()returniso.year,iso.week,iso.weekdaydefisoweek_to_datetime(isoweek:tuple[int,int,int])->datetime:"""isoweek日历转换为时间Args:isoweek(tuple[int,int,int]):year,week,weekday返回:datetime:time"""year,week,weekday=isoweekreturndatetime.fromisocalendar(year,week,weekday)