gpt4 book ai didi

python - 具有正确的时区和正确的日期时间

转载 作者:行者123 更新时间:2023-11-28 17:36:22 25 4
gpt4 key购买 nike

我正在使用 feedparser为了得到RSS数据。这是我的代码:

>>> import datetime
>>> import time
>>> import feedparser

>>> d=feedparser.parse("http://.../rss.xml")

>>> datetimee_rss = d.entries[0].published_parsed

>>> datetimee_rss
time.struct_time(tm_year=2015, tm_mon=5, tm_mday=8, tm_hour=16, tm_min=57, tm_sec=39, tm_wday=4, tm_yday=128, tm_isdst=0)

>>> datetime.datetime.fromtimestamp(time.mktime(datetimee_rss))
datetime.datetime(2015, 5, 8, 17, 57, 39)

在我的时区 (FR) 中,实际日期是 May, 8th, 2015 18:57 .

在 RSS XML 中,值为 <pubDate>Fri, 08 May 2015 18:57:39 +0200</pubDate>

当我将它解析为日期时间时,我得到了 2015, 5, 8, 17, 57, 39 .

如何拥有2015, 5, 8, 18, 57, 39无需肮脏的黑客攻击,只需配置正确的时区即可?

编辑:

通过做:

>>> from pytz import timezone

>>> datetime.datetime.fromtimestamp(time.mktime(datetimee_rss),tz=timezone('Euro
pe/Paris'))
datetime.datetime(2015, 5, 8, 17, 57, 39, tzinfo=<DstTzInfo 'Europe/Paris' CEST+2:00:00 DST>)

我有更好的东西,但是,它似乎在脚本的其余部分不起作用,我有很多 TypeError: can't compare offset-naive and offset-aware datetimes错误。

最佳答案

feedparser 确实提供了原始的日期时间字符串(只需从属性名称中删除 _parsed 后缀),因此如果您知道字符串的格式,则可以对其进行解析自己进入一个 tz 感知的日期时间对象。

例如,使用您的代码,您可以获得 tz-aware 对象:

datetime.datetime.strptime(d.entries[0].published, '%a, %d %b %Y %H:%M:%S %z')

有关 strptime() 的更多引用,请参阅 https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior

编辑:由于 Python 2.x 不支持 %z 指令,请改用 python-dateutil

pip install python-dateutil

然后

from dateutil import parser
datetime_rss = parser.parse(d.entries[0].published)

文档位于 https://dateutil.readthedocs.org/en/latest/

关于python - 具有正确的时区和正确的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30130588/

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