在Python中将奇数时间戳与偏移量转换为UNIX时间

时间:2013-08-17 22:29:24

标签: python datetime python-dateutil

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

  

10 / Jun / 2005:05:59:05 -0500

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

可以使用datetime

转换time.mktime(datetime.timetuple())

根据datetime docsdatetime.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'

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

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

这也不起作用:

  

ValueError:未知字符串格式

现在是什么?

1 个答案:

答案 0 :(得分: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