Читать форматированную дату в Python 2.3? - PullRequest
2 голосов
/ 18 декабря 2009

Я никогда не работал с модулем datetime в Python 2.3, и у меня очень глупая проблема. Мне нужно прочитать дату в формате

'10-JUL-2010'

затем вычтите день (я бы использовал timedelta) и верните строку

'09-JUL-2010 00:00:00 ET'

конечно, это для сотен дат. Хотя это должно быть тривиально, я не могу найти информацию о том, как читать отформатированные даты в Python 2.3! Помогите!

Редактировать

Я могу получить отформатированную дату в виде кортежа, но она не примет объект timedelta для вычитания! Все еще работаем над этим ...

** Редактировать **

Наконец-то ... благодаря вашей помощи я смог решить проблему следующим образом:

print (datetime(*(time.strptime(date_string, format)[0:6])).strftime('%d-%b-%Y')).upper()+'00:00:00 ET'

Ответы [ 3 ]

3 голосов
/ 18 декабря 2009

Вы ищете datetime.datetime.strptime(), но документация ужасна для этой функции, фактически это обратная операция datetime.datetime.strftime().

Строка формата, которую вы ищете: '%d-%b-%Y'

См .: http://www.python.org/doc/2.3.5/lib/node211.html и http://www.python.org/doc/2.3.5/lib/datetime-datetime.html и http://www.python.org/doc/2.3.5/lib/module-time.html

Редактировать: О, хватит! В модуле datetime в python 2.3 нет strptime. Он находится в модуле time, вместо него вам придется его использовать.

2 голосов
/ 18 декабря 2009

Ну, в 2.3 нет встроенной функции, только с 2,5 на Но для этого одного формата вы можете разобрать его вручную ...

months = { 'JAN' : 1, 'FEB' : 2, ... } # write that yourself :p
day,mon,year = thedate.split('-')
day = int(day)
mon = months[mon]
year = int(year)
parsed = datetime.datetime(day=day, month=month, year=year)
0 голосов
/ 18 декабря 2009

Если strptime () не работает для вас, есть также опция грубой форсировки с помощью регулярного выражения:

import re
import date
timestamp_regex = re.compile(r"(\d\d)-(\w\w\w)-(\d\d\d\d)")
# month_mapping: a mapping for 3 letter months to integers
d1 = datetime.date(int(match.group(3)),          #year
                   month_mapping[match.group(2)],#month
                   int(match.group(1)))          #day
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...