回答
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