我有一个来自网络日志的时间戳字符串,如下所示:
10 / Jun / 2005:05:59:05 -0500
它喜欢将其转换为UNIX时间戳。
可以使用datetime
time.mktime(datetime.timetuple())
根据datetime
docs,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'
在阅读了关于该错误的SO的许多问题后,我决定尝试python-dateutil
:
from dateutil import parser
parser.parse("10/Jun/2005:05:59:05 -0500")
这也不起作用:
ValueError:未知字符串格式
现在是什么?
答案 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