it-swarm.com.de

Wie werden String-Daten mit 2-stelligem Jahr analysiert?

Ich muss Zeichenfolgen analysieren, die 6-stellige Datumsangaben im Format yymmdd darstellen, wobei yy von 59 bis 05 (1959 bis 2005) reicht. Laut den Modulen time ist Pythons Standard-Pivotjahr 1969, was für mich nicht funktioniert.

Gibt es eine einfache Möglichkeit, das Pivotjahr außer Kraft zu setzen, oder können Sie eine andere Lösung vorschlagen? Ich benutze Python 2.7. Vielen Dank!

23
blah238

Ich würde datetime verwenden und es normal analysieren. Dann würde ich datetime.datetime.replace für das Objekt verwenden, wenn es nach dem Datum Ihrer Decke ist - 100 Jahre zurückstellen:

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

Bereite das Jahrhundert mit deinem eigenen Pivot auf dein Datum vor:

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

verwenden Sie dann strptime mit der %Y-Direktive anstelle von %y.

3
msw

Sie können auch Folgendes ausführen:

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

Vor kurzem hatte ein ähnlicher Fall mit dieser grundlegenden Berechnung und Logik:

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