在Python语言中,与使用datetime.weekday()
相比,使用datetime.strftime()
将星期几显示为整数会显示不同的结果。
>>> import datetime
>>> now = datetime.datetime.now()
>>> now.strftime('%A')
'Sunday'
>>> now.strftime('%w') # Day of the week as an integer.
'0'
>>> now.weekday() # Day of the week as an integer, a different way.
6
对于strftime()
,字符串格式%w
将星期日作为一周的第一天。而对于weekday()
,则是星期一。
这两者不同的历史原因是什么?
发布于 2011-09-26 13:18:22
Python的strftime
函数模拟c库中的函数。因此,%w
向0
返回一个星期天的动机完全来自于此。
相反,date.weekday()
方法返回一个周日的6
,因为它试图匹配更老的time
模块的行为。在该模块中,时间通常由struct_time
表示,在此模块中,struct_time.tm_day
使用6
来表示周日。
正确的问题变成了.当C库的tm
结构使用0
时,为什么time.struct_time
将星期天表示为6
?
答案是...因为它就是这样。自1993年Guido首次签入gmtime
和localtime
函数以来,此行为一直存在。
吉多不会错的..。所以你最好去问他。
发布于 2011-09-26 13:04:58
最初,ISO8601标准使用1 .. 7
表示星期一到星期日。为了方便起见,后来在解释中允许使用0=Sunday
。
如果您想要使用更一致的内容,请尝试使用isoweekday
0=Monday
标准是欧洲的惯例。我想这并不令人惊讶:
发布于 2011-09-26 14:12:51
也许strftime
不是基于语言环境,而是weekday
基于语言环境?因为我有不同的输出:
In [14]: d.strftime("%A")
Out[14]: 'Sunday'
In [15]: d.strftime("%w")
Out[15]: '0'
In [16]: now.weekday()
Out[16]: 0
https://stackoverflow.com/questions/7550726
复制相似问题