本地化 RSS 提要日期

Localizing RSS Feed Dates

我正在构建一个具有一项功能的网站,该功能将来自多个不同网站的各种讨论 forums/feeds 整合到一个提要中。一切正常,除了两个站点并不总是显示日期,而是 'relative text'。例如,一个站点在今天创建 post 时显示今天 12:00 下午。另一个使用“18 小时 14 分钟前”。这两个站点是 www.mudconnect.com 和 www.mudbytes.net

可以找到这两个提要的代码 here. An example of the feed can be seen here

一切正常,直到服务器时间滚动到新的一天,然后 mudconnect ("Today") posts 显示为当前服务器日期而不是前一天。

例如。 服务器时间下午 5 点 - 今天晚上 11 点 = 9 月 4 日晚上 11 点 服务器时间凌晨 1 点 - 今天晚上 11 点 = 9 月 5 日晚上 11 点

我知道这不是什么超级复杂的事情,但无论出于何种原因,我只是在这里遇到了心理障碍。任何援助将不胜感激。编程语言是 PHP 7。如果需要,我可以提供整个 PHP 脚本。

谢谢!

Please note: Different web site servers may operate on different time zones, and thus the post times displayed may not coincide with what is shown on the individual forum sites. We've normalized them to all use the same time zone (EST). http://mudlistings.com/index.php/community/multi-forums-feed

RSS 提要中的所有 post 已 "normalized" 到 EST,并按最新 post.

的顺序列出

如果您尝试将此数据与其他供稿内联列出,只需将其他供稿的时间戳转换为美国东部标准时间,然后它们就会全部处于同一时区。

如果您的服务器时区不是美国东部标准时间,那么您可以 add/subtract 小时的 Feed 数据来匹配您的服务器。

试试这个代码:

$string = '18 hours and 14 minutes ago';
$regex = '#\d+\s\w+#';

preg_match_all($regex, $string, $matches);

$date = new DateTime();
echo 'current date = '.$date->format('Y-m-d H:i:s')."\n";

foreach ($matches[0] as $modify) {
    $date->modify('-'.$modify);
}

echo 'modified date = '.$date->format('Y-m-d H:i:s');

希望你能跟上!这将输出:

current date = 2017-09-06 17:16:39 

modified date = 2017-09-05 23:02:39

看到它在这里工作:https://3v4l.org/LL4R0