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!
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)
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' )
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
.
Sie können auch Folgendes ausführen:
today=datetime.datetime.today().strftime("%m/%d/%Y")
today=today[:-4]+today[-2:]
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