2013-05-17 3 views
13

Ich muss Strings analysieren, die 6-stellige Daten im Format yymmdd darstellen, wobei yy von 59 bis 05 reicht (1959 bis 2005). Gemäß den time Dokumenten-Dokumenten ist Pythons Standard-Pivot-Jahr 1969, was für mich nicht funktionieren wird.Wie werden String-Daten mit 2-stelligem Jahr analysiert?

Gibt es eine einfache Möglichkeit, das Pivot-Jahr zu überschreiben, oder können Sie eine andere Lösung vorschlagen? Ich benutze Python 2.7. Vielen Dank!

Antwort

18

Ich würde datetime verwenden und es normal analysieren. Dann würde ich datetime.datetime.replace auf das Objekt verwenden, wenn es vorbei Decke Datum - es zurück 100 Jahre einstellen .:

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

Prepend das Jahrhundert zu Ihrem Datum Ihre eigene Dreh mit:

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

und dann strptime verwenden, um mit der %Y Richtlinie statt %y.

1
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') 
0

Sie können auch die folgenden ausführen:

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