Tengo un dictado que tiene un montón de fechas en formato europeo (%d/%m/%Y). Estoy intentando reformatear las fechas para que estén en formato de EE. UU. (%m/%d/%Y). Siempre que lo ejecuto, se identifica el siguiente error:

ValueError: time data '2' does not match format '%m/%d/%Y'

¿Alguien sabe lo que necesito corregir? ¡Gracias por tu ayuda!

from datetime import datetime
import time
from time import mktime


Transaction_Date=[
"23/08/2017",
"23/08/2017",
"21/08/2017",
"01/10/2017",
"19/08/2017",
"19/08/2017",
"18/08/2017",
"03/09/2017",
"27/09/2017",
"26/08/2017",
"03/10/2017",
"27/09/2017",
"27/03/2017",
"02/08/2017",
"20/08/2017",
"20/08/2017",
"20/08/2017",
"20/08/2017",
"20/08/2017",
"20/08/2017"]

for row in Transaction_Date:
    Transaction_Date = row[0]
    Transaction_Date = datetime.strptime(Transaction_Date,'%d/%m/%Y').strftime('%m/%d/%Y')
    print(Transaction_Date)

Da el siguiente error:

ValueError: time data '2' does not match format '%m/%d/%Y'

Por lo que puedo decir, el formato de fechas es correcto, ¿por qué el sistema dice diferente?

1
Will Roberts 13 nov. 2017 a las 07:25

2 respuestas

La mejor respuesta

Solo necesita usar row dentro de su ciclo de la siguiente manera:

from datetime import datetime

Transaction_Dates = [
    "23/08/2017", "23/08/2017", "21/08/2017", "01/10/2017",
    "19/08/2017", "19/08/2017", "18/08/2017", "03/09/2017",
    "27/09/2017", "26/08/2017", "03/10/2017", "27/09/2017",
    "27/03/2017", "02/08/2017", "20/08/2017", "20/08/2017",
    "20/08/2017", "20/08/2017", "20/08/2017", "20/08/2017"]

for row in Transaction_Dates:
    print(datetime.strptime(row, '%d/%m/%Y').strftime('%m/%d/%Y'))

Que muestra:

08/23/2017
08/23/2017
08/21/2017
10/01/2017
08/19/2017
08/19/2017
08/18/2017
09/03/2017
09/27/2017
08/26/2017
10/03/2017
09/27/2017
03/27/2017
08/02/2017
08/20/2017
08/20/2017
08/20/2017
08/20/2017
08/20/2017
08/20/2017
0
Martin Evans 13 nov. 2017 a las 08:23

Tu código tiene 2 errores: -

Usando el mismo nombre (Transition_Date) tanto para la colección como para su resultado, estás usando row[0] en lugar de row

from datetime import datetime 
import time 
from time import mktime

Transaction_Date_Collection = [ "23/08/2017", "23/08/2017", "21/08/2017", "01/10/2017", "19/08/2017", "19/08/2017", "18/08/2017", "03/09/2017", "27/09/2017", "26/08/2017", "03/10/2017", "27/09/2017", "27/03/2017", "02/08/2017", "20/08/2017", "20/08/2017", "20/08/2017", "20/08/2017", "20/08/2017", "20/08/2017"]

for Transaction_Date in Transaction_Date_Collection: 
    Transaction_Date = datetime.strptime(Transaction_Date,'%d/%m/%Y').strftime('%m/%d/%Y')
    print(Transaction_Date)
0
Himanshu Bansal 13 nov. 2017 a las 04:49