2011-08-11 26 views
8

Utilizando Python, guardo una fecha como & como datetime.datetime en GAE. ¿Hay alguna manera de obtener el valor del tiempo de la fecha en milisegundos en comparación con la versión de cadena completamente formateada?Representación en milisegundos de datetime en python

Basado en los documentos de datetime.datetime, no veo ningún método nativo en la clase de fecha y hora que hace esto. http://docs.python.org/release/2.5.2/lib/datetime-datetime.html

El valor fecha original se almacena de esta manera:

date_time_float = 1015182600 #some date as timestamp 
date_time_object = datetime.fromtimestamp(date_time_float);             

Cuando me tire de los datos de la tienda, que es de tipo:

type(exported_date_time) # type: datetime.datetime 

Hay strftime para convertir en una cadena representación, pero lo que estoy buscando es convertir 'exported_date_time' a milisegundos.

+1

¿No podría simplemente agarrar la marca de tiempo de Unix y multiplicar por 1000? –

+0

@agf Tu respuesta es exactamente de lo que estaba hablando. –

Respuesta

14

para obtener los segundos desde la época:

date_time_secs = time.mktime(datetimeobj.timetuple()) 

o para toda la cosa en milisegundos

date_time_milis = time.mktime(datetimeobj.timetuple()) * 1000 + datetimeobj.microsecond/1000 

o similar.

+0

El argumento time.mktime es 'struct_time o 9-tuple completo que expresa la hora en hora local, no UTC'. ¿Cómo se convierte datetime.datetime en él? –

+0

@agf En el documento, la notación '' datetime.timetuple() '' significa que ** timetuple() ** es un método de una instancia de la clase ** datetime ** (del módulo ** datetime **); Además, ** mktime() ** devuelve un tiempo Unix, un flotante. Además, para Dan, ** date_time_object ** es una instancia de ** datetime.datetime **. Entonces la expresión debe ser: '' unixtime = time.mktime (date_time_object.timetuple()) '' – eyquem

+0

@agf Escribí un comentario confuso, lo borré. Y no vi tu respuesta antes de mi nuevo comentario. Entiendo ahora: usted estaba considerando '' datetime.timetuple() '' como representación genérica de una notación _instance.timetuple() _, tal como se practica en los documentos. Pero creo que el uso de esta representación genérica debe restringirse a los documentos, no se usa en códigos reales, de lo contrario es confuso. Corrigió y eso es mejor. Pero IMO, el nombre restante ** date_time_object ** para lo que es un flotante sigue siendo un error – eyquem

Cuestiones relacionadas