Después de consultar especialistas en esta materia, programadores de varias ramas y maestros hemos dado con la solución al dilema y la compartimos en esta publicación.
Solución:
Pruebe el siguiente formato:
%Y-%m-%dT%H:%M:%S.%fZ
Por ejemplo:
>>> datetime.datetime.strptime('2012-05-29T19:30:03.283Z', '%Y-%m-%dT%H:%M:%S.%fZ')
datetime.datetime(2012, 5, 29, 19, 30, 3, 283000)
El Z
en la fecha solo significa que debe interpretarse como una hora UTC, por lo que ignorarlo no causará ninguna pérdida de información. Puede encontrar esta información aquí: http://www.w3.org/TR/NOTE-datetime
Para proporcionar una alternativa, si no le importa instalar el python-dateutil
paquete, puedes usar dateutil.parser.parse
. Tenga en cuenta que el formato de la entrada se adivina mediante parse
; una entrada no válida aún se puede interpretar, correctamente o de otra manera. Sin embargo, adivinar el formato será significativamente más lento que especificarlo explícitamente.
Sin zona horaria
Si prefiere no establecer la zona horaria, lo cual está perfectamente bien si representa todas las horas internamente solo como UTC, use:
>>> dateutil.parser.parse('2012-05-29T19:30:03.283Z', ignoretz=True)
datetime.datetime(2012, 5, 29, 19, 30, 3, 283000)
Con zona horaria
Tenga en cuenta que a diferencia de datetime.datetime.strptime
, esta llamada predeterminada a parse
conserva automáticamente la zona horaria UTC.
>>> import dateutil.parser
>>> dateutil.parser.parse('2012-05-29T19:30:03.283Z')
datetime.datetime(2012, 5, 29, 19, 30, 3, 283000, tzinfo=tzutc())
Si es necesario realizar una afirmación de prueba para la igualdad, el objeto esperado se puede construir como:
>>> import datetime
>>> datetime.datetime(2012, 5, 29, 19, 30, 3, 283000, tzinfo=dateutil.tz.tzutc())
Calificaciones y comentarios
Tienes la opción de animar nuestra publicación escribiendo un comentario o dejando una valoración te estamos agradecidos.