2008-10-18 51 views

Respuesta

31

La manera más fácil es usar dateutil .parser.parse() para analizar la cadena de fecha en un objeto de fecha y hora de fecha y hora, y luego usar strftime() para obtener el formato que desee.

import dateutil.parser 

d = dateutil.parser.parse('2008-09-26T01:51:42.000Z') 
print(d.strftime('%m/%d/%Y')) #==> '09/26/2008' 
+0

¿Por qué 'import datetime'? Parece que no lo estás usando. – jhrr

+0

@jhrr 'dateutil.parser.parse' convierte el objeto de cadena en objeto de fecha y hora. Esa biblioteca 'datetime' es para manejar la conversión de cadena de fecha y hora para este objeto, es decir. 'd.strftime'. – addicted

+0

@jhrr ¡Buen ojo! Gracias. –

14
>>> import time 
>>> timestamp = "2008-09-26T01:51:42.000Z" 
>>> ts = time.strptime(timestamp[:19], "%Y-%m-%dT%H:%M:%S") 
>>> time.strftime("%m/%d/%Y", ts) 
'09/26/2008' 

Consulte la documentación del módulo de Python time para más información.

+0

sé que en este caso no son relevantes, por supuesto, pero hay una manera de manejar milisegundos cortos de despojarlos? –

+0

Desafortunadamente, la función strptime no parece tener un operador de conversión durante milisegundos. –

+0

Aunque la respuesta parece bastante completa, si desea leer más sobre el tema python/fecha y hora sugeriría esta página http://pleac.sourceforge.net/pleac_python/datesandtimes.html – Seldaek

2

2008-09-26T01:51:42.000Z es una fecha ISO8601 y el formato puede ser muy diverso. Si desea analizar estas fechas, consulte la wiki de python en working with time. Contiene algunos enlaces útiles a los módulos.

0
def datechange(datestr): 
dateobj=datestr.split('-') 
y=dateobj[0] 
m=dateobj[1] 
d=dateobj[2] 
datestr=d +'-'+ m +'-'+y 
return datestr 

U puede hacer una función como ésta, que tome objeto de fecha andá vuelve usted fecha en dateFormat deseada ....

9

Sé que esto es muy vieja pregunta, pero se puede hacer con datetime.strptime pitón()

>>> from datetime import datetime 
>>> date_format = "%Y-%m-%dT%H:%M:%S.%fZ" 
>>> datetime.strptime('2008-09-26T01:51:42.000Z', date_format) 
datetime.datetime(2008, 9, 26, 1, 51, 42) 
+1

Gracias por dar la cadena de formato. ¡Útil para strptime y strftime! –

Cuestiones relacionadas