python工作日和strftime(“U”)

python工作日和strftime(“U”),python,Python,是否有以下解决方法 from datetime import datetime, timedelta a = datetime.now() # <== 2016-03-09 11:06:04.824047 print a.strftime("%U") >>> 10 #go back to previous Sunday b = a - timedelta(days = 3) print b.strftime("%U") >>> 10 print

是否有以下解决方法

from datetime import datetime, timedelta
a = datetime.now() # <== 2016-03-09 11:06:04.824047 

print a.strftime("%U")
>>> 10

#go back to previous Sunday
b = a - timedelta(days = 3)

print b.strftime("%U")
>>> 10
print b.weekday()
>>> 6
从datetime导入datetime,timedelta
a=日期时间.现在()#>>10
#回到上个星期天
b=a—时间增量(天数=3)
打印b.strftime(“%U”)
>>> 10
打印b.工作日()
>>> 6

难道不应该
b.strftime(“%U”)
9
,因为它是一周的最后一天吗?

%U
将周视为从周日开始,而不是从周一开始。从:

%U

一年中的周数(星期日为一周的第一天)为零填充十进制数。新年中第一个星期日之前的所有日子都被视为在第0周

您可以使用
%W
格式,根据星期一是一周的第一天,该格式给出一个零填充周数:

%W

一年中的周数(星期一为一周的第一天)为十进制数。新年中第一个星期一之前的所有日子都被视为在第0周

如果您需要按照ISO 8601获取周数,可以使用
b.isocalendar()[1]
。第1周的规则与ISO日历计算不同
%W
以一年中的第一个星期一为基础,而ISO 8601规定包括1月4日在内的一周为第一周。2016年,两个系统保持一致,但2014年、2015年或2019年并非如此:

>>> d = datetime(2019, 3, 9)
>>> d.strftime('%W')
'09'
>>> d.isocalendar()[1]
10

如果等到Python 3.6,可以使用
%V
格式包含ISO周数,请参见。

周数从周日开始,适用于
%U
。或%W即b.strftime(“%W”)@Cos:但这是不同的周数方案。