2015-03-05 1 views
2

PHP имеет удивительную функцию strtotime(), которая принимает практически все и превращает ее во времени.Форматировать форматы форматов даты в Python (включая rfc3164)

Я ищу что-то подобное в Python?

В качестве примера, почему: Я разбираю syslogs, которые имеют самый тупой формат (aka rfc3164), который пропускает год и включает пробельный пробел в месяц.

В настоящее время в Python Я делаю это:

import datetime 
d='Mar 5 09:10:11' # as an example 

# first remove the space, if it exists 
if d[4] == ' ': 
    d = d[0:4] + d[5:] 
# append this year (I know, it could be last year around Dec/Jan!) 
d = str(datetime.datetime.now().year) + ' ' + d 

# now we can feed it strptime 
date = datetime.strptime(d, "%Y %b %d %H:%M:%S") 

Это действительно некрасиво.

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

ответ

1

Я думаю, что вы ищете dateutils модуля:

In [12]: d = 'Mar 5 09:10:11' 

In [13]: import dateutil 

In [14]: dateutil.parser.parse(d) 
Out[14]: datetime.datetime(2015, 3, 5, 9, 10, 11) 
+0

Удивительные Python не имеет этого в ядре. Но спасибо, это именно то, что мне нужно. – artfulrobot

+0

@artfulrobot Если это помогло, не забудьте принять его :) –

+0

Да, спасибо, это немой «о, вы не можете принять этот ответ за 36,4 секунды», что заставило меня забыть. Должен задаться вопросом, для чего цель этих ограничений - один день! – artfulrobot