Модуль времени Python не будет обрабатывать год до 1900 - PullRequest
3 голосов
/ 04 июля 2011

Я хочу преобразовать дату рождения из текстового файла. Допустим, у меня есть данные

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 ]

8 голосов
/ 04 июля 2011

Согласно питону учебник

Точный диапазон лет, для которого 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)
0 голосов
/ 04 июля 2011

Вот предыдущий пост, который может иметь некоторые идеи для вас: форматирование-дата-строка-в-питон-для-дат-до-до-1900

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...