首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Python的datetime.strftime('%w')和datetime.weekday()对星期几使用不同的索引?

为什么Python的datetime.strftime('%w')和datetime.weekday()对星期几使用不同的索引?
EN

Stack Overflow用户
提问于 2011-09-26 12:42:42
回答 3查看 13.3K关注 0票数 21

在Python语言中,与使用datetime.weekday()相比,使用datetime.strftime()将星期几显示为整数会显示不同的结果。

代码语言:javascript
复制
>>> 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(),则是星期一。

这两者不同的历史原因是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-26 13:18:22

Python的strftime函数模拟c库中的函数。因此,%w0返回一个星期天的动机完全来自于此。

相反,date.weekday()方法返回一个周日的6,因为它试图匹配更老的time模块的行为。在该模块中,时间通常由struct_time表示,在此模块中,struct_time.tm_day使用6来表示周日。

正确的问题变成了.当C库的tm结构使用0时,为什么time.struct_time将星期天表示为6

答案是...因为它就是这样。自1993年Guido首次签入gmtimelocaltime函数以来,此行为一直存在。

吉多不会错的..。所以你最好去问他。

票数 14
EN

Stack Overflow用户

发布于 2011-09-26 13:04:58

最初,ISO8601标准使用1 .. 7表示星期一到星期日。为了方便起见,后来在解释中允许使用0=Sunday

如果您想要使用更一致的内容,请尝试使用isoweekday

0=Monday标准是欧洲的惯例。我想这并不令人惊讶:

票数 5
EN

Stack Overflow用户

发布于 2011-09-26 14:12:51

也许strftime不是基于语言环境,而是weekday基于语言环境?因为我有不同的输出:

代码语言:javascript
复制
In [14]: d.strftime("%A")
Out[14]: 'Sunday'

In [15]: d.strftime("%w")
Out[15]: '0'

In [16]: now.weekday()
Out[16]: 0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7550726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档