获取当前周数的算法(不是ISO)

时间:2014-03-20 17:56:02

标签: python datetime

我正在寻找一种简单的方法来获取Python当前的当周数字。我很清楚标准库中的datetime.datetime.isocalendar()函数,但是这个函数规定第1周是新年的第一个星期一。我的困境是我用星期日作为每周的起点,如果星期日例如12月27日和1月1日出现在那个星期的某个时刻,我需要将那个星期表示为第1周(和年) 2015年)。

我想做类似(伪代码)的事情:

if (Jan 1) - (current_sunday) < 7 days:
    week_num = 1

然后将该周数存储在某个地方,以便在下周进行迭代。但是,我觉得这是一种非常苛刻的方法,并且更喜欢更清洁的东西。

1 个答案:

答案 0 :(得分:3)

通常获取当前周数(从星期日开始):

>>> import datetime
>>> import calendar
>>> today = datetime.date.today())
>>> (int(today.strftime('%U')) + (datetime.date(today.year+1, 1, 1).weekday() != calendar.SUNDAY)) % 53
12

来自strftime('%U')的文档:

  

&#34;一年中的周数(星期日作为一周的第一天)作为十进制数[00,53]。在第一个星期日之前的新年中的所有日子都被认为是在第0周。&#34;

因此,针对您的特定要求修改了代码。做你想做的事并不是一种非黑客的方式。