python datetime help - PullRequest
       7

python datetime help

0 голосов
/ 17 августа 2010

У меня есть большое поле поиска, где пользователи могут ввести любой кусок текста, и он будет искать его.

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

Пользователи IE могут искать, используя любую комбинацию из них:

  • 25/08/1970
  • 25-08-1970
  • 1970-08-25

Моя программа должна определить dmy для каждого.

Есть ли лучший способ?

def parse(dob):
    for d in dob.split(" "):
       # find the dob
       if len(d) == 10:
           # its a dob
           if d[0:4].isdigit() # this is the year
               year = d[0:4]
               month = d[5:7]
               day = d[8:10]
            elif d[6:10].isdigit() # this is the year
               day = d[0:2]
               month = d[3:5]
               year= d[6:10]

Ответы [ 2 ]

2 голосов
/ 17 августа 2010

Python-dateutil должен значительно облегчить вашу жизнь.

from dateutil.parser import parse as dparse
for each in ('25/08/1970', '25-08-1970', '1970/08/25', '1970-08-25'):
    dparse(each)

dparse(each) вернет экземпляр datetime.datetime.Вы можете выбрать дату, месяц и год из экземпляра datetime.

Обновление

Как указано mp0int , не забудьтелокализовать.

1 голос
/ 17 августа 2010

Dateutil.parser.parse - неприятная функция и должна использоваться осторожно, например,

In [16]: parse('2010-05-01')
Out[16]: datetime.datetime(2010, 5, 1, 0, 0)

In [17]: parse('01-05-2010')
Out[17]: datetime.datetime(2010, 1, 5, 0, 0)

Локализация является важным вопросом в формате даты и времени.

a = parse('01-05-2010')
a.astimezone(dateutil.tx.tzutc()) # not sure about dateutil.tx.tzutc()

возможно, это решит вашу проблему, но я не использовал ее, и я не уверен, что вам нужна именно функция dateutil.tx.

...