Python中的datetime从时间戳生成时出现了ValueError年份超出范围。

57
当我尝试将浮点格式的时间戳(例如1437506779950.0)转换为日期时间对象时,出现了一个ValueError“年份超出范围”的错误。这段代码在3个月前曾经工作过。现在重新审视它,奇怪的是,它现在抛出这个错误,但代码库中没有任何更改,只有传递给它的数据和显然已更改的时间戳。
>>> f = 1437506779950.0
>>> datetime.datetime.fromtimestamp(float(f))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: year is out of range
我不理解是什么改变导致了这个故障?

5
请参考这个问题。你可能没有将毫秒转换为秒吗? - sschilli
你确定这个数值是三个月前正常工作的确切数值吗?即使是这个数值 - f = 143750677995.0(你的数字除以10),也会让我进入公元6525年。 - Anand S Kumar
samalamma708:你可能想把那个作为答案,似乎那就是问题的所在。 - Llanilek
1个回答

133
此问题的答案中所指出,这似乎是一个单位转换问题。您需要将时间戳除以1000,从毫秒转换为秒。
在Python 2中,如果您想保留毫秒精度,可以除以1000.0。在Python 3中,无论是除以1000还是1000.0,都会保留毫秒精度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接