2009-04-14 25 views

Respuesta

121

Sólo convertirlo en marca de tiempo

datetime.datetime.fromtimestamp(ms/1000.0) 
+8

Una nota: en Python 3, (/) realizará una división de coma flotante. Para realizar la división integral, use (//). –

+2

¿De verdad no quieres la división de flotadores? De lo contrario, está perdiendo precisión por debajo de 1 segundo (se mantiene en la parte fraccionaria de la marca de tiempo). Es mejor usar ms/1000.0 sin truncamiento. – Brian

+0

No todas las plataformas admiten marcas de tiempo fraccionales, es mejor quedarse con los enteros de POSIX. –

5

¿Y esto? Supongo que se puede contar para manejar fechas antes de 1970 y después de 2038.

target_date_time_ms = 200000 # or whatever 
    base_datetime = datetime.datetime(1970, 1, 1) 
    delta = datetime.timedelta(0, 0, 0, target_date_time_ms) 
    target_date = base_datetime + delta 

como se menciona en la norma Python lib:

fromtimestamp() podría incrementar ValueError, si la marca de tiempo está fuera de el rango de valores admitido por las funciones de la plataforma C localtime() o gmtime() . Es común que esto se restrinja a años en 1970 hasta 2038.

+2

podría usar 'utc_time = datetime (1970, 1, 1) + timedelta (milisegundos = millis)' – jfs

Cuestiones relacionadas