用Python怎样将日历与时间转换,方法和代码是什么
Admin 2022-11-28 群英技术资讯 277 次浏览
介绍在线周日历(2022年)
在开发过程中,有些汇总咨询需要以周为单位统计,所以介绍下如何进行相互转换。
strftime 方法可以将时间转换为字符串
strptime 方法可以将字符串转为时间
"%Y,%W,%w"中,"%Y"代表年份,"%W"代表周,"%w"代表一周内的第几天
from datetime import datetime # 时间转周日历 a = datetime.now().strftime("%Y,%W,%w") print(a) # 2022,28,3 # 周日历转时间 a = datetime.strptime("2022,12,3","%Y,%W,%w") print(a) # 2022-03-23 00:00:00
以上貌似问题解决了,但是问题出在年初和年尾
以2021年12月,2022年1月举例
2021年12月
周数 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
---|---|---|---|---|---|---|---|
48 | 1 | 2 | 3 | 4 | 5 | ||
49 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
50 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
51 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
52 | 27 | 28 | 29 | 30 | 31 |
2022年1月
周数 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
---|---|---|---|---|---|---|---|
52 | 1 | 2 | |||||
1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
3 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
4 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
5 | 31 |
from datetime import datetime a = datetime.strptime("2021-12-31", "%Y-%m-%d") print(a.strftime("%Y,%W,%w")) # 2021,52,5 a = 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月,所以这是有问题的
datetime类型的时间直接调用 isocalendar 方法
from datetime import datetime def str_to_time(time_str: str) -> datetime: return datetime.strptime(time_str, "%Y-%m-%d") time_list = [ "2021-12-30", "2021-12-31", "2022-01-01", "2022-01-02", "2022-01-03", ] for i in time_list: t = str_to_time(i) iso = t.isocalendar() print(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
from datetime import datetime time_list = ( (2021, 52, 4), (2021, 52, 5), (2021, 52, 6), (2021, 52, 7), (2022, 1, 1), ) for year, week, weekday in time_list: t = datetime.fromisocalendar(year, week, weekday) print(f"{year},{week},{weekday}", " > ", t) # 2021,52,4 > 2021-12-30 00:00:00 # 2021,52,5 > 2021-12-31 00:00:00 # 2021,52,6 > 2022-01-01 00:00:00 # 2021,52,7 > 2022-01-02 00:00:00 # 2022,1,1 > 2022-01-03 00:00:00
from datetime import datetime def datetime_to_isoweek(datetime_: datetime) -> tuple[int, int, int]: """时间转换为iso周日历 Args: datetime_ (datetime): 时间 Returns: tuple[int,int,int]: year,week,weekday """ iso = datetime_.isocalendar() return iso.year, iso.week, iso.weekday def isoweek_to_datetime(isoweek: tuple[int, int, int]) -> datetime: """iso周日历转换为时间 Args: isoweek (tuple[int,int,int]): year,week,weekday Returns: datetime: 时间 """ year, week, weekday = isoweek return datetime.fromisocalendar(year, week, weekday)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了python和JavaScript通信,js和python是两种语言,js处理网页数据,python可作为服务端开发,两者通过websocket进行通信,下文具体操作内容需要的小伙伴可以参考一下
字符串转列表怎样实现,方法1,用list()直接转。方法2,如果字符串有规律特征的,则可以用split来转成想要的列表。
这篇文章主要介绍了python等间距取值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要为大家介绍了python文件读取read及readlines两种方法的使用示例及区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
1、强制等待(sleep)fromtimeimportsleepsleep(3)#强制等待3秒缺点:由于Web加载的速度取决于测试的硬件、网速、服务器的响应时间等因素。如果等待时间太长,容
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008