Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 输出周数字符串是否正确?_Python_Time_Week Number - Fatal编程技术网

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

考虑到一周从周日开始,我试图使用Python时间模块生成周数字符串

如果我对官员的解释正确,则可通过以下代码实现:

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'