2011-07-04 29 views
3

我要出生日期轉換從文本file.Let的說,我的數據的Python時間模塊不會處理前一年1900

fjsffk 1985-01-30 
fkgskgks 1899-02-20 

我試圖用下面的代碼,仍然得到錯誤:

import datetime 

months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 
      'August', 'September', 'October', 'November', 'December'] 
with open('file.txt', 'r') as f: 
    for line in f.readlines(): 
     dob = line.rsplit(None, 1)[-1] 
     dt = datetime.strptime(dob, "%Y-%m-%d")   
     print "{0:} {1:}, {2:}".format(months[dt.month-1], dt.day, dt.year) 

任何解決方案,請謝謝!

+0

'time'和'datetime'模塊在Python中是兩個不同的東西。您的標題提到* datetime *,但您的代碼使用* time *,並且再次提出的解決方案之一使用* datetime *。也許你想編輯你的問題並澄清? – mac

回答

7

按蟒蛇tutorial

The exact range of years for which strftime() works also varies across platforms. Regardless of platform, years before 1900 cannot be used.

請多多包涵 - 我曾嘗試以下解決方案,它爲我工作得很好:

from datetime import datetime 

mDt = datetime(1900,01,01) 
dt = datetime.strptime('20-02-1899', "%d-%m-%Y") 
resultString = datetime(dt.year + (mDt - dt).days/365 + 1, dt.month, dt.day).strftime('%B %d, %Y').replace('1900', str(dt.year)) 

或者是這樣的:

monthes = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] 
dt = datetime.strptime('20-02-1890', "%d-%m-%Y") 
print "{0:} {1:}, {2:}".format(monthes[dt.month-1], dt.day, dt.year) 
+0

謝謝!我現在就試試吧! – Forhad

+0

你可以檢查這一行'dt = datetime.strptime('20 -02-1890',「%d-%m-%Y」)' – Forhad

+0

你是什麼意思?這條線有什麼問題嗎? –

相關問題