【问题标题】:Correctly parsing an ATOM feed正确解析 ATOM 提要
【发布时间】:2023-04-03 12:05:01
【问题描述】:

我目前已经设置了一个 Python 脚本,它使用 feedparser 来读取和解析提要。但是,我最近遇到了日期解析的问题。我正在阅读的提要包含 <modified>2010-05-05T24:17:54Z</modified> - 它在 Python 中作为日期时间对象出现 - 2010-05-06 00:17:54。请注意差异:提要条目在 5 月 5 日被修改,而 python 将其读取为 6 日。

所以问题是为什么会这样。将时间设置为 24:17:54,是 ATOM 提要(即创建提要的人)错误,还是我的 python 脚本处理它的方式有误。

我能解决这个问题吗?

【问题讨论】:

    标签: python feedparser atom-feed


    【解决方案1】:

    这里的 rfc (https://www.rfc-editor.org/rfc/rfc3339) 中有一些有趣的特殊情况,但是,通常它用于 00:00:60 与 00:00:59 以允许闰秒。尽管那可能是合法的。我的猜测是它在做“正确的事情”。老实说,由于 DST 和本地时区等因素,日期/时间变得非常混乱。如果是 24:17:54,那可能是正确的。

    【讨论】:

    • 所以假设它做对了,我该如何纠正我的 python 脚本来处理这个问题?
    • @Joseph,我不会做任何事情,因为 Python 似乎在做正确的事情。如果它真的很重要,你需要写下提要使用的时区、python 生成的时区以及你真正想要的时区,然后使用 datetime 库正确修改。但除非你知道你使用的单位(即你使用的时区),否则你将无法解决问题。
    • @joseph 同意 wisty 的看法,python 正在做正确的事情,真的没有什么可以修复的。
    • @wisty True:但这是一个非常具体的案例;仅在 00/24 小时。其余时间,所有日期都被完美解析。所以我想如果我想更正它,我必须将该逻辑添加到我的脚本中。谢谢大家
    【解决方案2】:

    我认为今天 24:17 被智能地解析为明天 00:17.... 我认为您很好地处理了制作人的错误。

    【讨论】:

    • 不完全是:我知道制作人确实是指今天的 00:17。明天就是未来……
    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多