我有自1970年以来的毫秒时间戳。我想将它转换为python中的人类可读日期。如果涉及到这一点,我可能不会失去一些精确度。
我该怎么做?
以下为Linux 32bit上的 ValueError:timestamp超出范围time_t
#!/usr/bin/env python
from datetime import date
print date.fromtimestamp(1241711346274)
谢谢你, 格言。
答案 0 :(得分:17)
Python需要秒,所以先将它除以1000.0:
>>> print date.fromtimestamp(1241711346274/1000.0)
2009-05-07
答案 1 :(得分:3)
您可以保留精度,因为在Python中,时间戳是一个浮点数。这是一个例子:
import datetime
java_timestamp = 1241959948938
seconds = java_timestamp / 1000
sub_seconds = (java_timestamp % 1000.0) / 1000.0
date = datetime.datetime.fromtimestamp(seconds + sub_seconds)
显然你可以使它更紧凑,但上面的内容适合在REPL中一次输入一行,所以看看它的功能。例如:
Python 2.5.2 (r252:60911, Feb 22 2008, 07:57:53)
[GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> java_timestamp = 1241959948938
>>> import datetime
>>> seconds = java_timestamp / 1000
>>> seconds
1241959948L
>>> sub_seconds = (java_timestamp % 1000.0) / 1000.0
>>> sub_seconds
0.93799999999999994
>>> date = datetime.datetime.fromtimestamp(seconds + sub_seconds)
>>> date
datetime.datetime(2009, 5, 10, 8, 52, 28, 938000)
>>>
答案 2 :(得分:1)
以毫秒为单位将时间戳除以1000,以秒为单位。
date.fromtimestamp(1241711346274/1000)