是否有与平台无关的time.gmtime实现?

2 投票
1 回答
513 浏览
提问于 2025-04-15 17:27

在 Google App Engine 上(可以访问这个链接:http://shell.appspot.com/):

>>> time.gmtime(1000*365*24*60*60)
(2969, 5, 3, 0, 0, 0, 2, 123, 0)

在 macOS 系统上:

>>> time.gmtime(1000*365*24*60*60)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: timestamp out of range for platform time_t

有没有一种不依赖于特定平台的 time.gmtime 实现?

1 个回答

1

时间模块是根据不同平台来定义的。

这个模块里的函数不能处理“纪元”之前的日期和时间,也不能处理很远的未来的日期。对于未来的截止时间,这个限制是由C语言库决定的;在Unix系统中,通常是在2038年。

你可以使用日期时间类型,不带时区信息(称为“天真的日期时间”),在你的程序中通常被理解为格林威治标准时间(GMT),或者按照文档中(比较复杂的)tzinfo说明来使用。

>>> import datetime
>>> datetime.datetime(2969, 5, 3).year
2969
>>> datetime.MINYEAR, datetime.MAXYEAR
(1, 9999)

撰写回答