gpt4 book ai didi

python - 使用 python-twitter 库,如何设置时区?

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:17 27 4
gpt4 key购买 nike

我正在尝试列出带有时间戳的推文。我有这个...

#!/usr/bin/python
import twitter
api = twitter.Api()
statuses = api.GetUserTimeline('ttytter')
for s in statuses:
print s.created_at + " " + s.text

打印出...

Sat Oct 20 04:56:47 +0000 2012 @uriel1998 W/r/t DM,据我所知,它们在 2.0.4 和 2.1 beta 中表现良好。

这几乎是我所追求的,但就目前而言,它似乎处于错误的时区。 https://twitter.com/ttytter/status/259518502069760000

有没有办法在 python-twitter 库中更改它?我在看GetTimeZone() and SetTimeZone() ,但我一直无法弄清楚它们是如何工作的。

同时查看 how to shift a datetime object by 12 hours in python但不确定我是否需要去那里。

感谢您的帮助!

最佳答案

python-twitter将状态时间戳作为字符串和自纪元以来的秒数返回。后者最容易转换为时区感知 datetime实例(参见 answer )。

很遗憾,用户的time_zone 属性不在标准tz databasepytz 使用的格式,因此有必要改用 utc_offset 用户属性(我们仍然使用 time_zone 属性来命名使用 UTC 偏移创建的 tzinfo)。 python-dateutil包提供了一个方便的类型 tzoffset 允许创建 tzinfo来自 UTC 偏移量的实例,然后我们可以使用它来转换 datetime从 UTC 到本地时区:

import pytz
import twitter

from datetime import datetime
from dateutil.tz import tzoffset

USERNAME = 'ttytter'

api = twitter.Api()

# get a 'tzinfo' instance with the UTC offset for the user's local time
user = api.GetUser(USERNAME)
localtime_tz = tzoffset(user.time_zone, user.utc_offset)

statuses = api.GetUserTimeline(USERNAME)
for s in statuses[:1]:
# get UTC timestamp from seconds since epoch
utc_dt = datetime.utcfromtimestamp(s.created_at_in_seconds).replace(tzinfo=pytz.utc)
print('utc: {}'.format(utc_dt))
# convert to local time in the user's timezone
localtime_dt = utc_dt.astimezone(localtime_tz)
print('localtime [{}]: {}'.format(localtime_dt.tzname(), localtime_dt))

给出第一个状态的输出:

utc: 2012-10-20 04:56:47+00:00
localtime [Pacific Time (US & Canada)]: 2012-10-19 20:56:47-08:00

关于python - 使用 python-twitter 库,如何设置时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111625/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com