Python 获取当前周数(非ISO)的算法

Python 获取当前周数(非ISO)的算法,python,datetime,Python,Datetime,我正在寻找一种简单的方法来获取Python中的当前周数。我很清楚标准库中的datetime.datetime.isocalendar()函数,但该函数规定第一周是新年的第一个星期一。我的困境是,我使用周日作为每周的起点,如果周日是例如12月27日,1月1日出现在该周的某个点,我需要将该周表示为第1周(以及2015年) 我想做一些类似(伪代码)的事情: if(1月1日)-(当前周日)

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

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

if(1月1日)-(当前周日)<7天:
周数=1

然后将周数存储到某个地方,以便在下周迭代。但是,我觉得这是一种非常老练的方法,我更喜欢更干净的方法。

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

从strftime(“%U”)的文档中:

“一年中的周数(星期日为一周的第一天),以十进制数字[00,53]表示。在新的一年中,第一个星期日之前的所有天都被视为在第0周中。”


因此,针对您的特定需求修改了代码。没有真正的非黑客方式来做你想做的事。

+1。您还可以
导入时间;time.strftime(“%U”)
。OP想要
这个数字+1
这正是我想要的,但不完全是。我需要一周一周地思考,没有“部分”周。2014年12月28日星期日使用您的代码会给我52,但由于这一年在这一周结束,我希望它是1。2017-01-01是星期日,
%U
返回
1
,而不是
0
。公式可以是
%U+(1月1日不是太阳)
(日期(今天.年,1,1.weekday()!=日历.星期日)
@JonMartin:
(%U模52)+(1月1日不是太阳)
@J.F.Sebastian我如何将该伪代码转换为工作Python,以便添加到我的答案中?
if (Jan 1) - (current_sunday) < 7 days:
    week_num = 1
>>> import datetime
>>> import calendar
>>> today = datetime.date.today())
>>> (int(today.strftime('%U')) + (datetime.date(today.year+1, 1, 1).weekday() != calendar.SUNDAY)) % 53
12