2010-10-25 31 views
9

me gustaría convertir esta cadena en un objeto de fecha y hora:convertido al objeto de fecha y hora

Wed Oct 20 16:35:44 +0000 2010 

¿Hay una manera simple de hacer esto? ¿O tengo que escribir un RE para analizar los elementos, convertir Oct a 10 y así sucesivamente?

EDITAR: strptime es genial. Sin embargo, con

datetime.strptime(date_str, "%a %b %d %H:%M:%S %z %Y") 

consigo

ValueError: 'z' is a bad directive in format '%a %b %d %H:%M:%S %z %Y' 

a pesar% z parece ser correcta.

EDIT2: Parece que la etiqueta% z no es compatible. Ver http://bugs.python.org/issue6641. Lo solucioné usando un objeto timedelta para modificar la hora de forma adecuada.

Respuesta

2

Dependiendo de dónde se origine esa cadena, puede utilizar datetime.strptime para analizarlo. El único problema es que strptime depende de algunas cosas específicas de la plataforma, por lo que si esa secuencia necesita poder proceder de otros sistemas arbitrarios, y todos los días y meses no se definen exactamente igual (junio o junio), es posible que tener problemas

+0

no estoy seguro si elimina la zona horaria –

28

Sin RE necesario. Prueba esto:

from dateutil import parser 

yourDate = parser.parse(yourString) 

para "Mar Nov 20 16:35:44 +0000 2010" devuelve datetime.datetime(2010, 10, 20, 16, 35, 44, tzinfo=tzutc())

+2

dateutil no está en la biblioteca estándar. Sin embargo, es PyPI, así que 'pip install python-dateutil 'funciona. La licencia es PSF. –

+0

¡Excelente! apt-get install python-dateutil – Andy

2

estoy bastante seguro de que eres capaz de hacer que el uso de datetime.strptime.

A partir de los documentos:

datetime.strptime (date_string, formato)

Volver una fecha y hora correspondiente a date_string, analizada de acuerdo con formato. Esto es equivalente a datetime (formato * (time.strptime (date_string, ) [0: 6])). ValueError se genera si la fecha_cadena y el formato no pueden ser analizados por time.strptime() o si es devuelve un valor que no es un tiempo tupla.

Cuestiones relacionadas