Python 输出周数字符串是否正确?
考虑到一周从周日开始,我试图使用Python时间模块生成周数字符串 如果我对官员的解释正确,则可通过以下代码实现:Python 输出周数字符串是否正确?,python,time,week-number,Python,Time,Week Number,考虑到一周从周日开始,我试图使用Python时间模块生成周数字符串 如果我对官员的解释正确,则可通过以下代码实现: import time time.strftime("%U", time.localtime()) >> 37 我的问题是,上述输出是否正确?考虑到以下细节,输出不应该是38吗 我的时区是IST(格林尼治时间+5:30) 是的,输出是正确的。第一周从1月6日开始,因为那是2019年的第一个星期日。1月1日至5日为第0周: >>> time.str
import time
time.strftime("%U", time.localtime())
>> 37
我的问题是,上述输出是否正确?考虑到以下细节,输出不应该是38吗
我的时区是IST(格林尼治时间+5:30)
是的,输出是正确的。第一周从1月6日开始,因为那是2019年的第一个星期日。1月1日至5日为第0周:
>>> time.strftime('%U', time.strptime("2019-1-1", "%Y-%m-%d"))
'00'
>>> time.strftime('%U', time.strptime("2019-1-6", "%Y-%m-%d"))
'01'
文件中包括了这一点:
新年中第一个星期日之前的所有日子都被视为在第0周
您可能正在查找,但请注意,在这个系统中,一周的第一天是星期一
您可以使用该系统获取周数,或使用%V
格式化:
>>> time.strftime("%V", time.localtime())
'38'
>>> from datetime import date
>>> date.today().isocalendar() # returns ISO year, week, and weekday
(2019, 38, 2)
>>> date.today().strftime("%V")
'38'
这是正确的,因为你从第一个星期天开始计数 %U—当前年份的周数,从第一个星期天开始,作为第一周的第一天
没错。由于新年第一个星期日之前的所有日子都被视为第0周(01/01至01/05),因此本周是第37周。您是否期待ISO周数?计算方法略有不同:@jornsharpe:
isocalendar()
使用了不同的周数定义,但这大概是让OP感到困惑的原因。@MartijnPieters感谢您的详细解释。我忽略了其中的一部分,它说“新年中第一个星期日之前的所有日子都被认为是在第0周。”@MartijnPieters另外,我正在寻找类似ISO Weeknum的东西,但是从星期日开始,而不是从星期一开始。国际标准化组织2019年第1周从2018年12月31日至1月6日(周一至周日)。然而,在我的大会上,2019年第1周应该是从2018年12月30日到1月5日(星期日到星期一)。这是如何实现的?@Newbie92:有很多不同的周编号方案(维基百科说至少有6个[]()),我不太确定你是否真的希望将ISO周编号方案调整为周日。我所知道的是,你想在星期天开始几周,你认为今年的1月1日是1周。2019年12月31日应该是几周?在ISO日历中,这是2020年的第1周。还是应该是2019年第53周?确定第一周和最后一周的规则是什么?
>>> time.strftime("%V", time.localtime())
'38'
>>> from datetime import date
>>> date.today().isocalendar() # returns ISO year, week, and weekday
(2019, 38, 2)
>>> date.today().strftime("%V")
'38'