我在Twitter上有这个日期:
created_at = "Wed Aug 29 17:12:58 +0000 2012"
我希望使用以下内容将其转换为时间:
time.mktime(created_at)
但是我收到了这个错误:
TypeError: argument must be 9-item sequence, not str
我做错了什么?
答案 0 :(得分:6)
您需要先使用strptime
将传入的字符串转换为Python时间元组,然后才能对其执行任何操作。
此代码将获取输入字符串,将其转换为元组,然后使用time.mktime
将其转换为Unix-epoch time float:
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"))
答案 1 :(得分:1)
如果为时已晚,请使用arrow包,而不是更少的导入和更少的代码。
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
答案 2 :(得分:0)
它需要struct_time
,或者您可以使用9元组代表它。
所需条目为:
然而,这不是您需要的功能。您似乎想要使用strptime
。
根据文件:
Parse a string representing a time according to a format. The return value is a struct_time as returned by gmtime() or localtime(). >>> import 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)