2013-03-24 108 views
0

我正在使用Twitter API将我最近的一条XML文件推送到我的网站。 我已经在我的页面上显示了推文,但是无法显示推文显示后多少天。计算来自Twitter的天数XML XML

我已经尝试了一些解决方案在这里回答同样的问题,但它没有为我工作。 从XML文件中的日期和时间给出folows:

<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读取follwing日期“3月23日星期六18:43:16 +0000 2013”​​,并告诉了几天到目前为止?

+0

看到旧时间修改样式的答案开始投票,这很奇怪。我认为'DateTime'是我们想要拥抱未来的东西。尽管如此;猜他们已经够了。 – 2013-03-24 15:31:47

回答

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'; 
} 
+0

谢谢Allendar,它奇妙地工作! – CIRCLE 2013-03-24 16:12:23

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

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
$time = strtotime($xml->status[0]->created_at); 
$days = (time() - $time)/86400 //86400 = seconds of one day 

strtotime任何日期字符串转换为unixtime,因此,如果您减去从当前的时间,你会得到秒以来的鸣叫。要将其转换为天数,只需将其除以86400即可。