实际日历Python的周数

时间:2016-01-27 20:51:20

标签: python date

有人可以告诉我如何在Python中获取实际日历的周数。

Ex: 2016-01-01 to 2016-01-07 = week 1
    2016-01-08 to 2016-01-14 = week 2

我试过两种方法,但没有一种方法正常工作

  1. 使用isocalendar()
  2. 但这对于年终和年度开始周不起作用。例如:

    datetime.date(2016,01,01).isocalendar()[1]
    # should be: 1
    # got 53
    
    1. 如下:
    2. dt = date(2016,01,02)
      d = strftime("%U", time.strptime(str(dt),"%Y-%m-%d"))
      print d
      # 00
      
      
      dt = date(2016,01,03)
      d = strftime("%U", time.strptime(str(dt),"%Y-%m-%d"))
      print d
      # 01
      

      这两种方式都不符合我的要求。我可以使用其他库来获取实际日历中的周数吗?

1 个答案:

答案 0 :(得分:2)

您是在谈论实际的7天期间数而不是您所在的周数吗?请记住,2016年1月3日是第二周的第一天。

如果您正在查看哪个7天的期限,您应该只计算自年初以来的天数和楼层除以7

dt = datetime.datetime(year=2016, month=1, day=2)
days = dt - datetime.datetime(year=dt.year, month=1, day=1).days
weeks = days // 7 + 1

29日应该是第5周的第一天。让我们试一试。

dt = datetime.datetime(year=2016, month=1, day=29)
days = dt - datetime.datetime(year=dt.year, month=1, day=1).days
weeks = days // 7 + 1
# 5