我正在开展一个项目来确定Feedburner Feed中列出的网址/帖子的年龄。我可以解析,并以这样的格式获取pubDate值:Sat, 13 Jul 2013 10:00:15 +0000
我想创建一个PHP脚本,从当前日期时间中减去原始日期时间。我已经创建了strtotime($item->pubDate)
,但我对时区感到困惑。该脚本必须与每个提要(可能在不同的时区)一起使用,并且脚本必须在每个时区都正常工作。
那么如何根据这些规格确定帖子的年龄?
答案 0 :(得分: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。 $diff
是DateInterval的一个实例,代表“now”与您收到的日期之间的差异。