包介绍,两个包都是对周进行操作
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
里面还有一些其他方法,自己去看吧