Twitter created_at在python中转换纪元时间

时间:2013-09-04 03:06:32

标签: python twitter

我在Twitter上有这个日期:

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

我希望使用以下内容将其转换为时间:

time.mktime(created_at)

但是我收到了这个错误:

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

我做错了什么?

3 个答案:

答案 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)

阅读time.mktime

的文档

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

所需条目为:

  1. 日期
  2. 小时
  3. 分钟
  4. 第二
  5. 每周一天
  6. 日复一日
  7. 夏令时
  8. 然而,这不是您需要的功能。您似乎想要使用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)