在python中使用日期获取周数

时间:2014-01-15 14:41:58

标签: python datetime iso8601 week-number python-datetime

日期为datetime.date(2013, 12, 30)

我正在尝试使用

获取周数
import datetime
datetime.date(2013, 12, 30).isocalendar()[1]

我的输出为,

1

为什么我没有获得去年的周数,而是获得当年的周数?

我在这里做错了什么?

2 个答案:

答案 0 :(得分:8)

根据ISO8601 week numbering standard2013/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)

手动或将日期读取到字符串并获取周数,以不同的格式播放。