处理没有(有效)日期的RSS源项目

处理没有(有效)日期的RSS源项目,rss,rss-reader,simplepie,Rss,Rss Reader,Simplepie,我目前正在开发一个简单的RSS阅读器。对于从RSS提要检索项目,我使用。检索时,项目存储在带有标题、链接和日期的数据库中。用户将看到他们订阅的订阅源中的项目列表,最新的优先 有些RSS源没有每个项目的有效日期,或者根本不提供日期。例如,日期如2012年10月11日星期四无效(导致SimplePie返回null)。甚至不提供与日期相关的元素 由于提要项首先显示为最新,因此它们需要与之关联的有效日期。但是,如果没有提供这样的日期,我就不知道如何处理。修复无效日期没有捷径可走,我也不能凭空捏造一个日期

我目前正在开发一个简单的RSS阅读器。对于从RSS提要检索项目,我使用。检索时,项目存储在带有标题、链接和日期的数据库中。用户将看到他们订阅的订阅源中的项目列表,最新的优先

有些RSS源没有每个项目的有效日期,或者根本不提供日期。例如,日期如2012年10月11日星期四无效(导致SimplePie返回null)。甚至不提供与日期相关的元素


由于提要项首先显示为最新,因此它们需要与之关联的有效日期。但是,如果没有提供这样的日期,我就不知道如何处理。修复无效日期没有捷径可走,我也不能凭空捏造一个日期。

一个可能的解决方案是给无日期项目提供检索的时间戳。根据刷新提要的频率,这可以提供相当准确的时间戳

虽然这对于已经检索过一次项目的提要来说效果很好,但新提要的行为却不那么优雅。第一次加载无日期提要时,它将获取其所有项并为它们分配相同的时间戳,导致它们挤在“最新的第一个”项列表的顶部,因为它们可能具有最新的时间戳

要解决此问题,请在首次检索某个提要的项时,为该提要的项使用旧的(0可以正常工作)时间戳。当在后续刷新中遇到该提要的新项时,为它们提供检索的时间戳。这样,加载新的无日期提要不会将其所有项目推到顶部,但当它们出现时,该提要的新项目将获得相当准确的日期

总之,对于无日期的项目/提要:
首次从提要获取项目时:timestamp=0
从提要获取项目时后续时间:timestamp=current