两台不同的计算机(相同的python版本)为time.ctime()
返回不同的格式。一回
"Sun May 6 14:04:28 2018"
一个月的前一天有2个空格;其他回报
"Sun May 06 14:04:28 2018"
,带空格和零。我觉得它是由OS还是由C lib决定的。有人知道这取决于什么吗?
P.S .:我知道如何在代码中修复它,我正在寻找这种行为的根本原因。
答案 0 :(得分:2)
https://github.com/python/cpython/blob/master/Modules/timemodule.c包含相关代码:
static PyObject *
_asctime(struct tm *timeptr)
{
…
return PyUnicode_FromFormat("%s %s%3d %.2d:%.2d:%.2d %d", …
换句话说:所说的Python版本在月份之后产生了三个字符,没有任何零。所以它是Dec 9
或Dec 10
。
我无法找到一个不同的版本,但是您使用的其中一个版本可能会执行类似 >
"%s %s %02d…
的操作,并放置一个明确的空格和两位数的日期。
更新:通过返回“怪胎链”,我可以找到确实调用libc asctime()
函数的https://github.com/python/cpython/blame/2427ab9d6f132224d6ee4a2b7f00b9d69ba6c0a3/Modules/timemodule.c。直到那时,该功能确实取决于操作系统。
可以在2011年1月4日的https://github.com/python/cpython/commit/b9588b528a48302a4884d0500caec71f1c59280c下获得相关的变更集,据我所知,这些标签已移植到v2.7.4。如果您的版本早于该版本,那可以解释一些问题。