日期是 datetime.date(2013, 12, 30)
我正在尝试使用
import datetime
datetime.date(2013, 12, 30).isocalendar()[1]
我得到的输出为
1
为什么我没有得到去年的周数,而是得到了今年的周数?
我在这里做错了什么?
日期是 datetime.date(2013, 12, 30)
我正在尝试使用
import datetime
datetime.date(2013, 12, 30).isocalendar()[1]
我得到的输出为
1
为什么我没有得到去年的周数,而是得到了今年的周数?
我在这里做错了什么?
2013/12/30
根据ISO8601 周编号标准,您没有做错任何事情,属于 2014 年的第 1 周:
第 01 周的 ISO 8601 定义是包含一年中第一个星期四的那一周。
那一周的星期四是 2014/01/02。
其他解释定义的方法,来自同一个链接的 WikiPedia 文章:
- 这是 1 月份大部分(四天或更多)天的第一周(ISO 周从星期一开始)
- 它的第一天是最接近 1 月 1 日的星期一。
- 它有 1 月 4 日。因此,最早的可能日期是 12 月 29 日至 1 月 4 日,最晚是 1 月 4 日至 10 日。
- 如果星期六、星期日和 1 月 1 日不是工作日,则其中包含一年的第一个工作日。
如果您要查找给定年份的最后一周数(52 或 53,具体取决于年份),我会使用 12 月 28 日,它始终保证在最后一周(因为 1 月 4 日始终是次年的第一周):
def lastweeknumber(year):
return datetime.date(year, 12, 28).isocalendar()[1]
from datetime import date
from datetime import datetime
ndate='10/1/2016'
ndate = datetime.strptime(ndate, '%m/%d/%Y').strftime('%Y,%m,%d')
print('new format:',ndate)
d=ndate.split(',')
wkno = date(int(d[0]),int(d[1]),int(d[2])).isocalendar()[1]
print(wkno)
手动或将日期读取到字符串并获取周数,使用不同的格式。