Python时间模块将不会在1900年之前处理

时间:2011-07-04 12:33:07

标签: python datetime

我想从文本文件中转换出生日期。比方说,我有数据

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)

请解决任何问题,谢谢!

2 个答案:

答案 0 :(得分:8)

根据python tutorial

  

确切的年份范围   strftime()的工作方式也各不相同   平台。无论平台如何   1900年以前的年份不能使用。

请耐心等待 - 我尝试了以下解决方案,对我来说效果很好:

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)

答案 1 :(得分:0)

以上帖子可能会为您提供一些想法: formatting-date-string-in-python-for-dates-prior-to-1900