0

我正在做一个项目来确定 feedburner 提要中列出的网址/帖子的年龄。我可以解析并以如下格式获取 pubDate 值:Sat, 13 Jul 2013 10:00:15 +0000

我想创建一个 PHP 脚本,从当前的日期时间中减去原始日期时间。我已经创建了strtotime($item->pubDate),但我对时区感到困惑。该脚本必须适用于每个提要(可能在不同的时区),并且该脚本必须在每个时区都能正常工作。

那么如何根据这些规范确定帖子的年龄?

4

1 回答 1

0

您可以为此使用DateTime类,特别是静态方法`DateTime::createFromFormat()',如下所示:-

$dateStr = 'Sat, 13 Jul 2013 10:00:15 +0000';
$dateTime = \DateTime::createFromFormat('D, d M Y H:i:s O', $dateStr);
$dateTime->setTimezone(new \DateTimeZone('UTC'));
var_dump($dateTime);
$diff = $dateTime->diff(new \DateTime('now', new \DateTimeZone('UTC')));
var_dump($diff);

输出:-

object(DateTime)[1]
  public 'date' => string '2013-07-13 10:00:15' (length=19)
  public 'timezone_type' => int 3
  public 'timezone' => string 'UTC' (length=3)

object(DateInterval)[3]
  public 'y' => int 0
  public 'm' => int 0
  public 'd' => int 0
  public 'h' => int 22
  public 'i' => int 47
  public 's' => int 48
  public 'invert' => int 0
  public 'days' => int 0

如您所见,每个 dateTime 对象都将其时区设置为 UTC。$diffDateInterval的一个实例,它表示“现在”和您收到的日期之间的差异。

您可以使用'DateInterval::format()'以您希望的任何格式输出日期之间的差异

于 2013-07-14T08:53:56.763 回答