GP8*_*P89 4 python datetime year2038
我有一些代码将一些存储为字符串的时间戳转换为datetime对象,并注意到今天转换日期时int时间戳值大于max int的异常.
datetime.datetime.fromtimestamp(2147570047)
Run Code Online (Sandbox Code Playgroud)
比如给我
ValueError: timestamp out of range for platform time_t
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?假设我想继续使用32位python(运行2.7.2)
我注意到我可以将max int转换为datetime对象,然后使用timedeltas添加任何额外的东西,但我想不出在实践中这样做的特别有效或好的方法.我可以将这些2038多个时间戳转换为datetime对象的好方法是什么?
想想我已经解决了,我有点惊讶的是,这不会引发同样的异常
>>> datetime.datetime.fromtimestamp(0) + datetime.timedelta(seconds=2147570047)
datetime.datetime(2038, 1, 20, 4, 14, 7)
Run Code Online (Sandbox Code Playgroud)
编辑:这不是一个完美的解决方案,似乎是时区的一些问题(我目前在BST时间(+1)所以可能解释为什么这下面相隔一小时)
>>> datetime.datetime.fromtimestamp(2047570047)
datetime.datetime(2034, 11, 19, 17, 27, 27)
>>> datetime.datetime.fromtimestamp(0) + datetime.timedelta(seconds=2047570047)
datetime.datetime(2034, 11, 19, 18, 27, 27)
Run Code Online (Sandbox Code Playgroud)