【发布时间】:2018-02-18 08:50:45
【问题描述】:
我在 Windows 10 x64 上使用 Python 3.6.0。
刚刚发现time.ctime(seconds)中,seconds参数有一个隐含的最大值,即32536799999,几乎等于2^34.92135。
这是最大值吗?
错误信息只是说它是一个无效的号码。
>>> import time
>>> time.ctime(32536799999)
>>> 'Mon Jan 19 15:59:59 3001'
>>> time.ctime(32536799999+1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
我搜索并查看了 Python 文档,但没有找到任何相关信息。我将在我实验室的 Ubuntu 上检查这个问题。
【问题讨论】:
-
time.ctime只是调用一些操作系统提供的函数。文档说time.localtime(s) == time.asctime(time.localtime(s)),所以我会看到这些调用中的哪一个在 Windows 上失败。 -
请不要发布代码或数据的图像。欢迎来到 SO - 请花时间阅读 How to Ask 和 minimal reproducible example。
-
这很有趣,因为根据 Windows 文档,最大值实际上应该已经在 3000-12-31T23:59:59。
-
嗯,
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32>>> time.ctime(32536799999)'Mon Jan 19 09:59:59 3001'。Python 3.5.3 (default, Sep 9 2017, 23:18:15) [MSC v.1900 64 bit (AMD64)] on win32也一样。 -
@wwii 非常感谢您告诉我,马上修改。