Fecha de análisis de Python con strptime

Tengo url que devuelve fecha en este formato

url_date = "2015-01-12T08:43:02Z" 

No sé por qué hay cadenas, hubiera sido más sencillo obtenerlo como "2015-01-1208:43:02" cual hubiera sido más fácil de analizar utilizando

 datetime.datetime.strptime(url_date , '%Y-%m-%d') 

Pero no funciona. Lo he intentado con

 %Y-%m-%d %Y-%m-%d-%H-%M-%S %Y-%m-%d-%H-%M-%S-%Z 

Pero sigo recibiendo errores como “datos de tiempo 2015-01-12T08: 43: 02Z no coincide …”

El formato que está buscando es – '%Y-%m-%dT%H:%M:%SZ' .

Ejemplo –

 >>> url_date = "2015-01-12T08:43:02Z" >>> import datetime >>> datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ') datetime.datetime(2015, 1, 12, 8, 43, 2) 

Para el nuevo requisito en los comentarios –

si quisiera recuperar un tiempo con las cadenas como en 2015-01-12: 08: 43: 02, qué métodos deberían ser después de datetime (). datetime ()

Necesitaría usar .strftime() en el objeto datetime.datetime con el formato – '%Y-%m-%d:%H:%M:%S' . Ejemplo –

 >>> url_date = "2015-01-12T08:43:02Z" >>> dt = datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ') >>> dt.strftime('%Y-%m-%d:%H:%M:%S') '2015-01-12:08:43:02' 

Si quería el componente de tiempo, puede usar .time() para eso. Ejemplo –

 >>> dt = datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ') >>> dt.time() datetime.time(8, 43, 2) 

Estabas acercándote a la “Z” en tu bash final, necesitas especificar los valores literales de T, Z y colon en la cadena de formato.

 >>> import datetime >>> url_date = "2015-01-12T08:43:02Z" >>> datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ') datetime.datetime(2015, 1, 12, 8, 43, 2)