2015-10-29 17 views
5

datetime.strptime kullanarak Python 2.7'de bazı datetime dizeleri ayrıştırma yapıyorum. Bir tarihin şimdiye kadar olduğunu varsayalım.Python strptime yıldan yıla ayrıştırma yılı: bu yıldan önce mi varsayıldınız?

Ama strptime en %y operator varsayılan olarak bu yapmaz: ortak kullanımında olacağı gibi

d = '10/12/68' 
n = datetime.strptime(d, '%d/%m/%y') 
print n 
2068-12-10 00:00:00 

, Python 681968 olduğunu varsaymak olsun herhangi bir yolu var mı?

Ya da sadece dize ayrıştırmak ve el ile, uygun şekilde, 19 veya 20 eklemek gerekir?

cevap

3

Aslında sonra düzeltmek kolaydır:

from datetime import datetime, timedelta 
dt = datetime.strptime(...) 
if dt > datetime.now(): 
    dt -= timedelta(years=100) 
+1

Teşekkürler! timedelta, 'years' argümanını kabul etmiyor, ben de dt - = relativedelta (years = 100) 'yi kullandım. Gerekli ithalat "dateutil.relativedelta import relativedelta" dır. – Richard

+0

Veya: "timedelta (days = 365)", ancak bu yıllardan beri güvenli olmayabilir. –

0

girişinizi yerel saat diliminde ise:

from datetime import date 

then = datetime.strptime('10/12/68', '%d/%m/%y').date() 
if date.today() <= then: # *then* must be in the past 
    then = then.replace(year=then.year - 100) 

2100 (hariç) kadar Tamam çalışmalıdır. more details on arithmetic with calendar years için buraya bakın.