2010-10-08 21 views
13

estoy usando esto para convertir cadenas de fecha y hora a una marca de tiempo Unix:python - strtotime equivalent?

str(int(time.mktime(time.strptime(date,"%d %b %Y %H:%M:%S %Z")))) 

Sin embargo a menudo la estructura de la fecha no es lo mismo por lo que sigo recibiendo el mensaje de error:

tiempo los datos no encontró formato: datos = mar 26 de mayo 2009 19:58:20 -0500 fmt =% d% b% Y% H:% M:% S% Z

¿alguien sabe de cualquier simplemente función para convertir una representación de cadena de una fecha/hora a una marca de tiempo Unix en Pytho ¿norte? Realmente no quiero tener que abrir un proceso para llamar a un script php echo a la hora cada vez que marca de tiempo en un bucle :)

+0

¿Estás diciendo que el formato de la cadena difiere de la invocación a la invocación? ¿Y desea que esta función detecte el formato de su cadena para usted? – Ray

+0

Sí, eso es lo que dice. El asker se utiliza para strtotime de PHP, que incluye dicha heurística de autodetección de formato de fecha. –

+1

¿Por qué str (int (...)) alrededor de la expresión? Las marcas de tiempo de Unix en Python generalmente se pasan como números de coma flotante que permiten fracciones de segundo; probablemente no deberías convertir a una cadena a menos que necesites imprimir la marca de tiempo directamente por alguna razón. –

Respuesta

27
from dateutil.parser import parse 

parse('Tue, 26 May 2009 19:58:20 -0500').strftime('%s') 

# returns '1243364300' 
+12

Esto parece ser una referencia al módulo de terceros aquí: http://labix.org/python-dateutil. Por lo que yo sé, no hay una manera simple de analizar las cadenas de fechas de formato desconocido en la biblioteca estándar de Python. –

+0

que respondió mi problema, está bien con los módulos de terceros para mí. – Joe

+0

eso es dulce. ¡Gracias por llamar mi atención! – Andbdrew