Проблемы с Python DateTime - PullRequest
       2

Проблемы с Python DateTime

2 голосов
/ 25 января 2012

Все,

Я столкнулся с API, который возвращает неверные даты в виде строк.Например, иногда я сталкиваюсь с записью, которая возвращает «1856-00-00 00:00:00», которая не работает в моем приложении.Я могу легко преобразовать строку в объект datetime, но как я могу оценить один и тот же объект, чтобы определить, являются ли день и месяц 00?Вот что у меня есть.

try:
    date_taken = None
    if x.has_key('datetaken'):
        date_taken = x['datetaken']
        gooddate = dateutil.parser.parse(date_taken)
    if gooddate < datetime.datetime(1960, 01, 01, 00, 00, 00):
        fixdate = str(gooddate)   
except Exception as err:
    logger.error('datetaken: %s', err)

Я хотел бы преобразовать плохие объекты даты и времени в 1 января 1960 года.

Адам

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Просто попробуйте разобрать его и поймать исключение:

from datetime import datetime

string = '1856-00-00 00:00:00'

try:
    date = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')
except ValueError:
    date = datetime(1960, 1, 1, 0, 0, 0)

print(date)
0 голосов
/ 25 января 2012
>>> import datetime, dateutil, dateutil.parser
>>> mindate = datetime.datetime(1960, 01, 01, 00, 00, 00)
>>> gooddate = None
>>> try:
...  gooddate = dateutil.parser.parse('1856-00-00 00:00:00')
... except ValueError:
...  pass
... except Exception as err:
...  raise err
... 
>>> if gooddate is None or gooddate < mindate:
...  gooddate = mindate
... 
>>> gooddate
datetime.datetime(1960, 1, 1, 0, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...