today parse create convertir convert python json datetime date iso

parse - Convertir la cadena de fecha JSON a datetime de Python



python today date (2)

Para proporcionar una alternativa, si no le importa instalar el paquete python-dateutil , puede usar dateutil.parser.parse . Tenga en cuenta que el formato de la entrada se adivina mediante parse ; Una entrada no válida todavía puede ser interpretada, correctamente o de otra manera.

Sin zona horaria

Si prefiere que no se establezca la zona horaria, lo cual está perfectamente bien si representa todos los tiempos 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 de igualdad, el objeto esperado se puede construir como:

>>> import datetime >>> datetime.datetime(2012, 5, 29, 19, 30, 3, 283000, tzinfo=dateutil.tz.tzutc())

Cuando se traducen fechas a JSON, javascript está guardando fechas en este formato:

2012-05-29T19:30:03.283Z

Sin embargo, no estoy seguro de cómo introducir esto en un objeto datetime de python. He intentado estos:

# Throws an error because the ''Z'' isn''t accounted for: datetime.datetime.strptime(obj[key], ''%Y-%m-%dT%H:%M:%S.%f'') # Throws an error because ''%Z'' doesn''t know what to do with the ''Z'' # at the end of the string datetime.datetime.strptime(obj[key], ''%Y-%m-%dT%H:%M:%S.%f%Z'')

Creo que javascript está guardando la cadena en formato ISO oficial, por lo que parece que debería haber una manera de que datetime.strptime() python lo lea.


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)

La Z en la fecha solo significa que debe interpretarse como una hora UTC, por lo que ignorarla no causará ninguna pérdida de información. Puede encontrar esta información aquí: http://www.w3.org/TR/NOTE-datetime