解析 Python 中的任意日期格式(包括 rfc3164)

Parse arbitary date formats in Python (including rfc3164)

PHP 具有令人惊叹的 strtotime() 功能,它可以接受几乎所有内容并将其转化为时间。

我在 Python?

中寻找类似的东西

作为原因的一个例子:我正在解析具有有史以来最笨的格式(又名 rfc3164)的系统日志,它省略了一年并包含一个 space 填充的日期。

目前在 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")

这真的很丑

有没有更好的方法?

我认为您正在寻找 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)