日期为datetime.date(2013, 12, 30)
我正在尝试使用
获取周数import datetime
datetime.date(2013, 12, 30).isocalendar()[1]
我的输出为,
1
为什么我没有获得去年的周数,而是获得当年的周数?
我在这里做错了什么?
答案 0 :(得分:8)
根据ISO8601 week numbering standard,2013/12/30
属于2014年第1周,你没有做错任何事,def lastweeknumber(year):
return datetime.date(year, 12, 28).isocalendar()[1]
:
第01周的ISO 8601定义是其中第一个星期四的一周。
该周的星期四是2014/01/02。
其他解释定义的方法,来自同一个链接的WikiPedia文章:
- 这是第一周,其中一天(4周或更多)的一天(ISO星期一开始)
- 第一天是最接近1月1日的星期一。
- 它有1月4日。因此,最早可能的日期是12月29日至1月4日,即1月4日至10日。
- 如果星期六,星期日和1月1日不是工作日,它有一年的第一个工作日。
如果您正在寻找某一年的最后一周的数字(52或53,取决于年份),我将使用12月28日,这始终保证在上周(因为1月4日总是第二年第一个周的一部分):
{{1}}
答案 1 :(得分:0)
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)
手动或将日期读取到字符串并获取周数,以不同的格式播放。