我正在使用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”,并告诉我们已经过了多少天?
答案 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');
答案 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';
}