¿Cómo analizar las fechas de cadena con 2 dígitos año?

Necesito analizar cadenas que representan fechas de 6 dígitos en el formato yymmdd donde yy varía de 59 a 05 (1959 a 2005). De acuerdo con los documentos del módulo de time , el año pivote predeterminado de Python es 1969, lo que no funcionará para mí.

¿Hay una manera fácil de anular el año pivote, o puede sugerir alguna otra solución? Estoy usando Python 2.7. ¡Gracias!

datetime y lo analizaría normalmente. Luego usaría datetime.datetime.replace en el objeto si está más allá de su fecha límite – Ajustándolo de nuevo 100 años:

 import datetime dd = datetime.datetime.strptime(date,'%y%m%d') if dd.year > 2005: dd = dd.replace(year=dd.year-100) 

Pase el siglo a su fecha usando su propio pivote:

  year = int(date[0:2]) if 59 <= year <= 99: date = '19' + date else date = '20' + date 

y luego use strptime con la directiva %Y lugar de %y .

 import datetime date = '20-Apr-53' dt = datetime.datetime.strptime( date, '%d-%b-%y' ) if dt.year > 2000: dt = dt.replace( year=dt.year-100 ) ^2053 ^1953 print dt.strftime( '%Y-%m-%d' ) 

También puedes realizar lo siguiente:

 today=datetime.datetime.today().strftime("%m/%d/%Y") today=today[:-4]+today[-2:] 

Recientemente tuvo un caso similar, terminó con este cálculo y lógica básicos:

 pivotyear = 1969 century = int(str(pivotyear)[:2]) * 100 def year_2to4_digit(year): return century + year if century + year > pivotyear else (century + 100) + year