计算Twitter XML的天数

时间:2013-03-24 15:12:59

标签: php xml date twitter date-math

我正在使用Twitter API将我最近的推文从XML文件导入我的网站。 我已经在我的页面上显示了推文,但我无法显示自显示推文以来已经过了多少天。

我已经尝试过针对同样问题解答的一些解决方案,但它对我不起作用。 XML文件中的日期和时间如下:

<statuses type="array">
   <status>
      <created_at>Sat Mar 23 18:43:16 +0000 2013</created_at>
   </status>
</statuses>

我正在检索这样的数据:

<?php
$xmldata = 'https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=AblazeDigital';
$open = fopen($xmldata, 'r');
$content = stream_get_contents($open);
fclose($open);
$xml = new SimpleXMLElement($content);
?>
<?php 
    echo $xml->status[0]->created_at;
?>

如何使用php创建一个函数,读取下面的日期“星期三3月23日18:43:16 +0000 2013”​​,并告诉我们已经过了多少天?

4 个答案:

答案 0 :(得分:2)

使用strtotime()并将其与当前时间戳进行比较。

$date = $xml->status[0]->created_at;
$difference = time() - strtotime($date);
$days = $difference/24/3600;
echo $days . " days"; // outputs something like "0.857615740741 days"

请参阅DEMO

答案 1 :(得分:2)

$now = new DateTime();
$postdate = DateTime::createFromFormat("D M d H:i:s P Y", "Sat Mar 23 18:43:16 +0000 2013");
$interval = $now->diff($postdate);
echo $interval->format('%d days');

See it in action

答案 2 :(得分:2)

$time = strtotime($xml->status[0]->created_at);
$days = (time() - $time) / 86400 //86400 = seconds of one day

strtotime将任何日期字符串转换为unixtime,因此如果从当前时间中减去该字符串,则会获得自推文以来的秒数。要将其转换为天数,只需将其除以86400。

答案 3 :(得分:1)

$now = new DateTime('NOW');
$pageTime = new DateTime('Sat Mar 23 18:43:16 +0000 2013');

$sub = $now->diff($pageTime);
$days = $sub->format('%d');

if ($days < 1) {
    echo 'Less than a day has passed';
}
elseif ($days == 1) {
    echo $days.' day has passed';
}
else {
    echo $days.' days have passed';
}