本地化RSS Feed日期

时间:2017-09-06 15:03:08

标签: php rss

我正在构建一个网站,其中包含一项功能,可将来自多个不同网站的各种讨论论坛/供稿整合到一个Feed中。一切都运作良好,除了两个网站并不总是显示日期,而是“相对文本”。例如,当今天发布帖子时,一个站点在今天中午12:00显示。另一个使用'18小时14分钟前'。这两个网站是www.mudconnect.com和www.mudbytes.net

可以找到这两个Feed的代码here。可以看到Feed的示例here

一切正常,直到服务器时间翻到新的一天,然后mudconnect(“今天”)帖子显示为当前服务器日而不是前一天。

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

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

谢谢!

2 个答案:

答案 0 :(得分:0)

  

请注意:不同的网站服务器可能会在不同的时间运行   区域,因此显示的发布时间可能与不一致   显示在各个论坛网站上。我们将它们标准化为所有用途   同一时区(EST)。   http://mudlistings.com/index.php/community/multi-forums-feed

RSS Feed中的所有帖子已经"标准化"到美国东部时间并按最新职位的顺序列出。

如果您尝试将此数据与其他Feed一起列出,只需将其他Feed的时间戳转换为EST,然后它们将全部位于同一时区。

如果您的服务器的时区不是EST,那么您可以在Feed数据中添加/减去小时数以匹配您的服务器。

答案 1 :(得分:0)

试试这段代码:

$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