2010-04-27 29 views
20

He siguiente fecha:¿Cómo convertir una cadena de fecha a un objeto DateTime?

2005-08-11T16:34:33Z 

Necesito saber si esto es la fecha es antes o después de de fecha y hora (2009,04,01) y me parece que no puede encontrar un método que va a convertir ese cadena a algo que me permite compararlo a datetime (2009,04,01) de una manera significativa.

Respuesta

35

Dado que la cadena está en formato ISO, que puede ser significativa comparada directamente con la versión del formato ISO del datetime mencionas:

>>> s='2005-08-11T16:34:33Z' 
>>> t=datetime.datetime(2009,04,01) 
>>> t.isoformat() 
'2009-04-01T00:00:00' 
>>> s < t 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't compare datetime.datetime to str 
>>> s < t.isoformat() 
True 
>>> z='2009-10-01T18:20:12' 
>>> z < t.isoformat() 
False 

como se ve, mientras que no se puede comparar con la cadena de objetos de fecha y hora , siempre que las cadenas estén en formato ISO, está bien compararlas con el .isoformat() de los objetos datetime. Esa es la belleza de la representación en cadena de formato ISO de fechas y horas: es correctamente comparable y ordena correctamente como cadenas, sin necesariamente requerir conversión a otros tipos.

Si estás interesado en convertir,, que, por supuesto, puede: (segundo año, mes, día, hora, minuto,) la función

>>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ') 
datetime.datetime(2005, 8, 11, 16, 34, 33) 
+0

@Eric, eres bienvenido! –

0

Si conoce la cadena sólo tiene que utilizar el datetime.datetime . Divida su cadena para obtener las variables apropiadas y colóquela para que sea un tipo de fecha y hora. Entonces simplemente compáralo con lo que necesites.

O puede usar el formato iso como también lo han sugerido las personas.

+0

Gracias Jug. Así es como lo he estado haciendo, pero sabía que debe haber algo más elegante por ahí. Y, Alex lo proporcionó. :) –

+0

¡De nada! La de Alex es definitivamente la solución más elegante. No estaba seguro de cómo funcionaba el formato iso de la parte superior de mi cabeza y estoy lejos de mi computadora normal para verificar. –

Cuestiones relacionadas