平台localtime()/ gmtime()函数的时间戳超出范围

用户名

我尝试:

ts = -216345600000
datetime.datetime.fromtimestamp(ts/1000)

ValueError:时间戳超出平台localtime()/ gmtime()函数的范围

我检查epochconverter值:-216345600它的返回GMT:1963年2月23日星期六00:00:00 GMT

如何获得正确的结果?

退休43

对于许多值,例如过去或将来的距离太远,仅提供时间戳记fromtimestamp()会抱怨超出范围的错误。但是,您可以使用timedelta()纪元中的相对日期来计算日期

>>> from datetime import datetime, timedelta
>>> date = datetime(1970, 1, 1) + timedelta(seconds=-216345600)
>>> date
datetime.datetime(1963, 2, 23, 0, 0)
>>> date.strftime('%a, %d %b %Y %H:%M:%S GMT')
'Sat, 23 Feb 1963 00:00:00 GMT'

但是,请注意,您不能使用它来回到恐龙时代,因为它datetime()仍然具有可以支持的最小值和最大值。

>>> datetime(1970, 1, 1) + timedelta(seconds=-62135596800)
datetime.datetime(1, 1, 1, 0, 0)
>>> datetime(1970, 1, 1) + timedelta(seconds=253402300799)
datetime.datetime(9999, 12, 31, 23, 59, 59)
>>> datetime(1970, 1, 1) + timedelta(seconds=253402300800)

Traceback (most recent call last):
  File "<pyshell#157>", line 1, in <module>
    datetime(1970, 1, 1) + timedelta(seconds=253402300800)
OverflowError: date value out of range

timedelta() 也有其极限,但以纪元为参考点,我们甚至没有达到极限。

>>> timedelta(microseconds=1000000000*86400*10000-1)
datetime.timedelta(9999999, 86399, 999999)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章