Skip to forum content
PyDev
Форум python-разработчиков
You are not logged in.
Please login or register.
Root
»
Python
»
time.strptime
Pages:
You must log in or register to post a new topic
Posts [ 1 to 10 of 10 ]
- Registered: 2009-03-15 14:45:29
- Posts: 3
Не могу понять, как правильно сделать следующее:
— У меня есть цикл, в котором обрабатываются данные.
— Данные из разных источников, на которые я повлиять не могу.
— Среди данных есть дата. В одних источниках она вида "Sat, 14 Mar 2009 19:21:00 GMT", в других — "Fri, 06 Mar 2009 21:05:36 +0300".
— Мне нужно получить дату в таком виде, чтобы с ней можно было работать, как с датой. Не в виде строки.
Хотелось бы как-то одной функцией парсить оба случая. Возможно ли это?
- Registered: 2007-02-02 21:35:43
- Posts: 422
Первое, что приходит на ум - это решить в лоб, если видим 'GMT' подстроку, то это время по гринвичу насколько я понимаю т.е. отсекаем ' GMT' часть и пихаем в strptime, если же видим '\+0\d{3}' подстроку, то опять же отсекаем её и затем прибавляем/отнимаем к результату strptime нужное часовое смещение.
- Registered: 2007-09-19 15:30:16
- Posts: 182
batteries included =)
import email.utils
s = "Sat, 14 Mar 2009 19:21:00 GMT"
s1 = "Fri, 06 Mar 2009 21:05:36 -0300"
print email.utils.parsedate_tz(s)
print email.utils.parsedate_tz(s1)
Last edited MonAMMSKEMSK0MarE_March+0300RMarAMMSK
- Registered: 2007-02-02 21:35:43
- Posts: 422
Ух ты - круто. Интересно, а вот такое можно парсить из коробки?
Пт, 04 Июл 2008 19:02:06 +0200
Такое я нашёл в RSS выдаче одного блога. Я смотрел RFC и, насколько я понял, такие даты это вообще нарушение RFC.
- Registered: 2009-03-15 14:45:29
- Posts: 3
import email.utils
s = "Sat, 14 Mar 2009 19:21:00 GMT"
s1 = "Fri, 06 Mar 2009 21:05:36 -0300"
print email.utils.parsedate_tz(s)
print email.utils.parsedate_tz(s1)
Спасибо! До такого я бы не додумался. Парсить время модулем для почты — это сильно. :-)
- Registered: 2007-09-19 15:30:16
- Posts: 182
Интересно, а вот такое можно парсить из коробки?
Думаю можно, если поковырятся с локалью. В модуле locale - много всего в эту тему.
Last edited MonPMMSKEMSK0MarE_March+0300RMarPMMSK
- Registered: 2007-02-02 21:35:43
- Posts: 422
Может быть, как-нить поковыряюсь. Я перед тем как пост написать попробовал выставить локаль в ru_RU и вызвал parsedate_tz - вернуло None.
- Registered: 2009-03-15 14:45:29
- Posts: 3
Ух ты - круто. Интересно, а вот такое можно парсить из коробки?
Пт, 04 Июл 2008 19:02:06 +0200
Такое я нашёл в RSS выдаче одного блога. Я смотрел RFC и, насколько я понял, такие даты это вообще нарушение RFC.
Ну, если в лоб, то вырезать оттуда все буквы, а потом time.strptime по нужному формату.
- Registered: 2007-02-02 21:35:43
- Posts: 422
Нельзя вырезать, дата мне тоже важна.
- Registered: 2007-09-19 15:30:16
- Posts: 182
Может быть, как-нить поковыряюсь. Я перед тем как пост написать попробовал выставить локаль в ru_RU и вызвал parsedate_tz - вернуло None.
Да. сори parsedate_tz не канает. там свой парсер и в него все жестко забито.
Root
»
Python
»
time.strptime