2

我在 Twitter 上有这个日期:

created_at = "Wed Aug 29 17:12:58 +0000 2012"

我想使用以下方法将其转换为时间:

time.mktime(created_at)

但我得到这个错误:

TypeError: argument must be 9-item sequence, not str

我究竟做错了什么?

4

3 回答 3

7

您需要先将传入的字符串转换为 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"))
于 2013-09-04T03:20:50.897 回答
1

如果为时已晚,我不会,使用箭头包来代替可以减少导入和代码

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
于 2014-11-09T09:58:01.997 回答
0

阅读文档time.mktime

它需要struct_time,或者您也可以使用 9 元组来表示它。

所需的条目是:

  1. 日期
  2. 小时
  3. 分钟
  4. 第二
  5. 一周中的一天
  6. 一年中的一天
  7. 夏令时

但是,这不是您需要的功能。看来你想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)
于 2013-09-04T03:18:17.190 回答