python3 strftime 输出因平台而异

python3 strftime output varies by platform

Python3 strftime 产生的结果因平台而异。例如:

OS X 10.10.5

>>> sys.version
'3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]'
>>> datetime.datetime(1, 1, 1, 0, 0).strftime('%Y/%m/%d')
'0001/01/01'

Debian 8.5

>>> sys.version
'3.5.2 (default, Aug 12 2016, 16:05:15) \n[GCC 4.9.2]'
>>> datetime.datetime(1, 1, 1, 0, 0).strftime('%Y/%m/%d')
'1/01/01'

这是预期的行为吗?为什么?

strftime 只是您正在使用的 C 库中定义的 strftime 函数的薄包装。见相关'bug'here。此行为似乎 恰恰是另一种情况。

输出之间的差异与 Python 无关,因为 Python 只会传递参数并接收输出。由于不同的平台对 C stdlib 有不同的实现,因此在某些极端情况下您会得到不同的结果。