回答
datetime.strptime()
参考:我从Twitter的API获得这个格式http://docs.python.org/library/time.html#time.strptime
所以,为什么不包括一些实际解析格式的示例代码没有错误使用? – ThiefMaster 2012-07-09 20:20:50
然后你需要转换为Unix时间戳...看到http://stackoverflow.com/questions/2775864/python-datetime-to-unix-timestamp @thiefmaster ...我认为,希望的答案足以让他他想成为什么样的人,以及让他知道其他格式 – 2012-07-09 20:21:03
@JoranBeasley:看到我对这个问题的评论。他的格式显然不能解析。 – ThiefMaster 2012-07-09 20:24:40
最好的选择是使用dateutil.parser.parse()
它给你一个datetime
带有适当时区信息的对象:
>>> import dateutil.parser
>>> dt = dateutil.parser.parse('Mon Jul 09 09:20:28 +0200 2012')
>>> dt
datetime.datetime(2012, 7, 9, 9, 20, 28, tzinfo=tzoffset(None, 7200))
现在你只需要把它转换成UNIX时间戳:使用email.utils.parsedate_tz
>>> import time
>>> int(time.mktime(dt.timetuple()))
1341822028
你拥有的格式也可以轻松解析:
>>> import datetime
>>> import email.utils
>>> parts = email.utils.parsedate_tz('Mon Jul 09 09:20:28 +0200 2012')
>>> dt = datetime.datetime(*parts[:6]) - datetime.timedelta(seconds=parts[-1])
>>> str(dt)
'2012-07-09 07:20:28'
这实际上是如何在Python 3.3中实现email.utils.parsedate_to_datetime
(如果您想复制&将其粘贴到您的项目中,请将re将__parsedate_tz
与parsedate_tz
从email.utils
):
def parsedate_to_datetime(data):
if not data:
return None
*dtuple, tz = __parsedate_tz(data)
if tz is None:
return datetime.datetime(*dtuple[:6])
return datetime.datetime(*dtuple[:6],
tzinfo=datetime.timezone(datetime.timedelta(seconds=tz)))
如果时区被称为是永远+0000,你可以使用:
time.strptime('Mon Jul 09 09:20:28 +0000 2012', '%a %b %d %H:%M:%S +0000 %Y')
这返回datetime结构。如果您需要纪元以来)UNIX秒,通过time.mktime(运行,像这样的:如果
>>> time.mktime(time.strptime('Mon Jul 09 09:20:28 +0000 2012', '%a %b %d %H:%M:%S +0000 %Y'))
1341818428.0
或time.gmtime()确实是时区为UTC始终。
您需要解析它:http://docs.python.org/library/datetime.html#strftime-strptime-behavior – Blender 2012-07-09 20:16:13
请参阅http://devpython.com/2011/08/11/convert -utc-date-string-to-unix-timestamp/ – 2012-07-09 20:18:56
@Blender:OP的格式似乎很棘手。对于'+ 0000',他需要'%z',但是会导致'ValueError:'z'格式为'%a%b%d%H:%M:%S%z%Y''''的指令不正确 – ThiefMaster 2012-07-09 20:22:49