2

我有一个来自网络日志的时间戳字符串,如下所示:

2005 年 6 月 10 日:05:59:05 -0500

它喜欢将其转换为 UNIX 时间戳。

Adatetime可以转换为time.mktime(datetime.timetuple())

根据datetime文档datetime.strptime()应将其转换为日期时间:

from datetime import datetime
datetime.strptime("10/Jun/2005:05:59:05 -0500","%d/%b/%Y:%H:%M:%S %z")

至少在我的 Mac 上使用 Python 2.7.2,这会导致

ValueError:“z”是格式“%d/%b/%Y:%H:%M:%S %z”的错误指令

在阅读了有关该错误的许多问题后,我决定尝试python-dateutil

from dateutil import parser
parser.parse("10/Jun/2005:05:59:05 -0500")

那也不起作用:

ValueError:未知的字符串格式

怎么办?

4

1 回答 1

3

您可以使用dateutils进行转换,您需要两个步骤:

>>> import calendar
>>> from dateutil.parser import parse
>>> d = parse('10/Jun/2005:05:59:05 -0500', fuzzy=True)

这将创建一个日期时间对象

>>> d
datetime.datetime(2005, 6, 10, 5, 59, 5, tzinfo=tzoffset(None, -18000))

并将其转换为 UNIX 时间戳:

>>> ts = calendar.timegm(d.utctimetuple())
>>> print ts
1118401145
于 2013-08-17T22:43:12.040 回答