È possibile mantenere la precisione, perché in Python il timestamp è un galleggiante. Ecco un esempio:
import datetime
java_timestamp = 1241959948938
seconds = java_timestamp/1000
sub_seconds = (java_timestamp % 1000.0)/1000.0
date = datetime.datetime.fromtimestamp(seconds + sub_seconds)
È possibile, ovviamente, rendere più compatto di quello, ma quanto sopra è adatto per la tipizzazione, una linea alla volta, nel REPL, in modo da vedere che cosa fa. Ad esempio:
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)
>>>
fonte
2009-05-10 13:07:12
Potrebbe voler dividere per 1000,0 per forzare il punto mobile nelle versioni precedenti di Python. –
Infatti, modificato come tale. Grazie. – ismail