web-dev-qa-db-fra.com

Comment analyser les dates de chaîne avec une année à 2 chiffres?

J'ai besoin d'analyser des chaînes représentant des dates à 6 chiffres dans le format yymmddyy va de 59 à 05 (1959 à 2005). Selon la documentation du module time , l'année pivot de Python par défaut est 1969, ce qui ne me convient pas.

Existe-t-il un moyen simple d’annuler l’année pivot ou pouvez-vous suggérer une autre solution? J'utilise Python 2.7. Merci!

23
blah238

Je voudrais utiliser datetime et analyser normalement. Ensuite, j’utiliserais datetime.datetime.replace sur l’objet si la date limite est dépassée - Réglez-le 100 ans:

import datetime
dd = datetime.datetime.strptime(date,'%y%m%d')
if dd.year > 2005:
   dd = dd.replace(year=dd.year-100)
29
mgilson
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' )
3
Pic

Ajoutez le siècle à votre date en utilisant votre propre pivot:

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

puis utilisez strptime avec la directive %Y au lieu de %y.

3
msw

Vous pouvez également effectuer les opérations suivantes:

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

Récemment, un cas similaire a abouti à ce calcul et à cette logique de base:

pivotyear = 1969
century = int(str(pivotyear)[:2]) * 100

def year_2to4_digit(year):
    return century + year if century + year > pivotyear else (century + 100) + year
0
wittrup