Tengo datos de fecha y hora en este formato,

08:15:54:012 12 03 2016 +0000 GMT+00:00

Necesito extraer solo la fecha, eso es 12 03 2016 en Python.

He intentado

datetime_object=datetime.strptime('08:15:54:012 12 03 2016 +0000 GMT+00:00','%H:%M:%S:%f %d %m %Y')

Consigo un

ValueError: unconverted data remains:  +0000 GMT+00:00
-1
dm5 13 ene. 2017 a las 21:10

3 respuestas

La mejor respuesta

Si necesita esto como una cadena, use rebanado

text = '08:15:54:012 12 03 2016 +0000 GMT+00:00'

print(text[13:23])

# 12 03 2016

Pero también puedes convertir a fecha y hora

from datetime import datetime

text = '08:15:54:012 12 03 2016 +0000 GMT+00:00'

datetime_object = datetime.strptime(text[13:23],'%d %m %Y')

print(datetime_object)
# datetime.datetime(2016, 3, 12, 0, 0)

Por cierto:

En su versión original, debe eliminar +0000 GMT+00:00 utilizando el corte [:-16]

strptime('08:15:54:012 12 03 2016 +0000 GMT+00:00'[:-16], '%H:%M:%S:%f %d %m %Y')

También puede usar split() y join()

>>> x = '08:15:54:012 12 03 2016 +0000 GMT+00:00'.split()
['08:15:54:012', '12', '03', '2016', '+0000', 'GMT+00:00']

>>> x[1:4]
['12', '03', '2016']

>>> ' '.join(x[1:4])
'12 03 2016'
0
furas 13 ene. 2017 a las 18:43

Si no le importa usar una biblioteca externa, considero que el módulo dateparser es mucho más intuitivo que las pitones datetime interno. Puede analizar casi cualquier cosa si solo lo haces

>>> import dateparser
>>> dateparser.parse('08:15:54:012 12 03 2016 +0000 GMT+00:00')

Afirma que puede manejar las compensaciones de zona horaria aunque no lo haya probado.

1
MattDMo 13 ene. 2017 a las 19:05

Puedes hacerlo así:

d = '08:15:54:012 12 03 2016 +0000 GMT+00:00'
d = d[:23] #Remove the timezone details

from datetime import datetime
d = datetime.strptime(d, "%H:%M:%S:%f %m %d %Y") #parse the string
d.strftime('%m %d %Y') #format the string

Usted obtiene:

'12 03 2016'
0
Vaishali 13 ene. 2017 a las 18:53