我在 Twitter 上有这个日期:
created_at = "Wed Aug 29 17:12:58 +0000 2012"
我想使用以下方法将其转换为时间:
time.mktime(created_at)
但我得到这个错误:
TypeError: argument must be 9-item sequence, not str
我究竟做错了什么?
您需要先将传入的字符串转换为 Python 时间元组,strptime
然后才能对其进行任何操作。
此代码将获取输入字符串,将其转换为元组,然后使用以下命令将其转换为 Unix 纪元时间浮点数time.mktime
:
import time
created_at = "Wed Aug 29 17:12:58 +0000 2012"
print time.mktime(time.strptime(created_at,"%a %b %d %H:%M:%S +0000 %Y"))
如果为时已晚,我不会,使用箭头包来代替可以减少导入和代码。
pip install arrow
然后:
>>> arrow.Arrow.strptime("Wed Aug 29 17:12:58 +0000 2012", "%a %b %d %H:%M:%S %z %Y")
<Arrow [2012-08-29T17:00:58+00:00]>
>>> arrow.Arrow.strptime("Wed Aug 29 17:12:58 +0000 2012", "%a %b %d %H:%M:%S %z %Y").timestamp
1346259658
阅读文档time.mktime
它需要struct_time
,或者您也可以使用 9 元组来表示它。
所需的条目是:
但是,这不是您需要的功能。看来你想strptime
改用。
根据文档:
根据格式解析表示时间的字符串。 返回值是 gmtime() 或 localtime() 返回的 struct_time。 >>> 进口时间 >>> time.strptime("30 Nov 00", "%d %b %y") time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
所以,你可以这样做:
time.strptime(created_at)