Python time.ctime() 格式 : 0-padding or space-padding

标签 python python-2.7 time formatting ctime

两台不同的计算机(相同的 python 版本)为 time.ctime() 返回不同的格式。一个返回

"Sun May  6 14:04:28 2018"

月份前有2个空格;其他返回

"Sun May 06 14:04:28 2018"

带有一个空格和一个零。我觉得它是由操作系统或 C lib 决定的。有谁知道这取决于什么?

P.S.:我知道如何在代码中修复它,我正在寻找这种行为的根本原因。

最佳答案

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 9Dec 10

我找不到不同的版本,但您使用的某个版本可能会执行类似 "%s %s %02d... 的操作,放置一个明确的空格和两个-数字日。

更新:通过返回“责备链”,我可以找到 https://github.com/python/cpython/blame/2427ab9d6f132224d6ee4a2b7f00b9d69ba6c0a3/Modules/timemodule.c这确实调用了 libc asctime() 函数。到那时,该功能确实依赖于操作系统。

可以在 https://github.com/python/cpython/commit/b9588b528a48302a4884d0500caec71f1c59280c 下找到相关的变更集2011 年 1 月 4 日,据我了解标签,已向后移植到 v2.7.4。如果您的版本比那个版本旧,那就说明了一些事情。

关于Python time.ctime() 格式 : 0-padding or space-padding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53709244/

相关文章:

python - Pandas 用字典中的值替换部分字符串

python - Django 将数据库字段从整数更改为 CharField

python - selenium 无法使用方法 : cannot find elements by id, css_selector、xpath、链接文本定位元素

django - 使用 postgresql 和 django 存储地理信息的最佳模块是什么?

python - 如何在变量周围打印双引号?

c - 时钟时间和墙上时间有什么区别?

用于在数据框中选择最接近所选时间的每日值的 Python 函数

python - 如何获取 scikit-learn 决策树所有节点的 pos/neg 实例计数?

python - 替换 % 后跟字符串中的数字

python - 生成 datetime.time 对象数组 python