Yao*_*Min 7 python windows time
我在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
Run Code Online (Sandbox Code Playgroud)
我用Google搜索并查看了Python文档,但没有找到任何有关它的信息。我将在实验室中的Ubuntu上检查此问题。
该time文件没有提到任何限制,但datetime文件的作用:
fromtimestamp()可能会引发OverflowError,如果时间戳超出平台 Clocaltime()或gmtime()函数支持的值范围,并且OSErroronlocaltime()或gmtime()failure。[...]
datetime假设Naive实例表示本地时间,并且此方法依赖于平台 Cmktime()函数来执行转换。由于datetime支持比mktime()许多平台更广泛的值,因此此方法可能会OverflowError在过去或未来很长时间内出现。
然后我们转到Windows 文档:
_localtime64使用该__time64_t结构,允许日期表示为 3000 年 12 月 31 日 23:59:59,协调世界时 (UTC),而_localtime32表示日期为 2038 年 1 月 18 日,UTC,23:59:59。
localtime是一个内联函数,其计算结果为_localtime64,并且time_t等效于__time64_t。如果您需要强制编译器解释time_t为旧的 32 位time_t,您可以定义_USE_32BIT_TIME_T. 这样做将导致localtime评估为_localtime32。不建议这样做,因为您的应用程序可能会在 2038 年 1 月 18 日之后失败,并且在 64 位平台上是不允许的。
所有与时间相关的函数(包括ctime)都以相同的方式工作。因此,您可以在 Windows 10 上的时间戳之间可靠转换的最大日期是 3000-12-31T23:59:59Z。
尝试获得独立于平台的最大时间戳很困难。
| 归档时间: |
|
| 查看次数: |
2749 次 |
| 最近记录: |