gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 17:02:10 24 4
gpt4 key购买 nike

两台不同的计算机(相同的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com