在Python中,使用datetime.strftime()
将一周中的某一天显示为整数与使用datetime.weekday()
显示的结果不同。
>>> 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()
,现在是星期一。
这两个不同的历史是什么?
也许
weekday
是基于语言环境的,而strftime
不是?因为我有不同的输出: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
函数以来,这种行为就一直存在。圭多不会错的。。。所以你最好问问他。
最初,ISO 8601标准使用
1 .. 7
表示周一到周日。为了方便起见,稍后允许解释0=Sunday
。如果要使用更一致的内容,请尝试使用
isoweekday
标准是欧洲公约。我想这并不奇怪:P
相关问题 更多 >
编程相关推荐