是否可以通过Python';是时候用';超出范围';?

是否可以通过Python';是时候用';超出范围';?,python,datetime,time,Python,Datetime,Time,给定以下代码: value = time.mktime(datetime.fromtimestamp(timestamp).timetuple()) 这是否可能产生溢出错误“mktime参数超出范围”,如果是,什么范围的时间戳会导致这种情况?NB:按照您的要求,我想没有可能的时间戳会触发您正在寻找的特定异常,因为datetime.fromtimestamp将引发一个ValueError,因为它(可能)受到相同的限制 现在,mktime的范围取决于平台,所以我不能给你一个明确的答案。在我的Lin

给定以下代码:

value = time.mktime(datetime.fromtimestamp(timestamp).timetuple())

这是否可能产生溢出错误“mktime参数超出范围”,如果是,什么范围的时间戳会导致这种情况?

NB:按照您的要求,我想没有可能的时间戳会触发您正在寻找的特定异常,因为
datetime.fromtimestamp
将引发一个
ValueError
,因为它(可能)受到相同的限制


现在,
mktime
的范围取决于平台,所以我不能给你一个明确的答案。在我的Linux 32位计算机中,边界在有符号32位整数内,因此转换为小于-2147483648(即
(1901,12,13,19,44,16)
)或超过2147483647或
(2038,1,19,3,14,7)
)的元组将触发该异常。。。但是,对您来说,
datetime.fromtimestamp
会更早地捕获它。

是的。我在Windows上比UTC早两个小时。我在int32范围的最后两个小时内得到错误:

>>> def roundtrip(x):
...     return time.mktime(datetime.datetime.fromtimestamp(x).timetuple())
...
>>> roundtrip(2**31-1-7200)
2147476447.0
>>> roundtrip(2**31-7200)
OverflowError: mktime argument out of range
>>> roundtrip(2**31-1)
OverflowError: mktime argument out of range
>>> roundtrip(2**31)
ValueError: timestamp out of range for platform time_t

不知道为什么会被否决;我意识到这有点具体,但我要问的是一个关于Python行为/限制的真实问题,文档中没有涉及到这个问题。+1 yes对我来说似乎是一个有效的问题