包介绍,两个包都是对周进行操作

datetime.isocalendar()
isoweek

1. datetime.isocalendar

操作对象是datetime对象

from datetime import datetime
now = datetime.now()
print(now.isocalendar())
==> 返回的是一个元祖,分别是年份,时间的周数,最后是周几,4就是周4
(2019, 43, 4)

另外还有2个直接求当前是周几

# 以周一为起始时间
datetime.isoweekday()   
==>4 
# 以周日为起始时间
datetime.weekday()
==>3

2. datetime.strptime 格式化时间,返回的是字符串

参数请参考 https://www.runoob.com/python/att-time-strptime.html

ps:这个返回的周数在2019年比ioscalendar少一周,
使用时需要注意,这个方法每年的周数是在变化的,在测试每年的1月1号,会产生不一样的结果,2017-01-01是2017-00,
2018-01-01是2018-01,
2019-01-01又是2019-00
这可能就是比ioscalendar方法少一周的原因,建议使用isocalendar,
在月份上没问题

print(now.strftime("%Y-%W"))
==>
2019-42

3.isoweek包

使用前需要pip下载
源码中也有很多调用了isocalendar方法,是最周的补充
详细 : https://pypi.org/project/isoweek/

from isoweek import Week
# 里面的参数是2019年,30周
w=Week(2019,30)
print(w)
==>
2019W30

# 可以直接对当前周进行加法
print(w+1)
==>
2019W31

# 可以直接算出当前时间是第几周,里面的值必须是datetime类型
today = datetime.date.today()
Week.withdate(today)
==>
2019W43

# 本周
Week.thisweek()
==>
2019W43

# 得到某年的每一周
weeks=Week.weeks_of_year(2019)
for week in weeks:
  print(week)
===>
2019W01
2019W02
2019W03
2019W04
2019W05
...

# 获取这周的周一,里面还有周二到周日
print(w.monday())
==>
2019-07-22

里面还有一些其他方法,自己去看吧

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容