Python文档定义datetime.weekday()为一个整数,其中星期一为0,星期日为6,而C的tm.tm_wday定义为星期日以来的天数.因此tm_wday是(datetime.weekday() + 1) % 7,这是相当不方便.鉴于Python通常接近C等价物,为什么这样做?
Mar*_*ers 11
这是Guido van Rossum在第一次time为Python 0.9.9 创建模块时做出的明确决定; 在原来的承诺并没有解释为什么他做出了这个选择,但使用0含义周一已经从非常时刻得到的Python的一部分localtime,并gmtime添加功能.请参阅该早期版本中的time_convert()功能.
我们必须猜测他为什么这样做.最有可能的是,Guido坚持工作日的ISO 8601大会而不是C stdlib大会,也许是因为他是欧洲人,周一是本周的主要开始.另一个选择是他完全模仿另一种语言的行为; Python的根源是多种多样的,除了ABC之外,C和C++还包括Modula 3.而不是后者使用这种约定; 它取代了C stdlib.
请注意,他还使用了不同的tm_mon值范围,从1到12,而不是使用0到11的C stdlib约定.
在任何情况下,2000年comp.lang.python关于为什么time.gmtime()在星期一使用0的问题仍未得到答复.