0

我正在使用 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 创建一个函数,读取以下日期“2013 年 3 月 23 日星期六 18:43:16 +0000 2013”​​并告诉今天已经过去了多少天?

4

4 回答 4

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"

演示

于 2013-03-24T15:19:53.500 回答
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');

看到它在行动

于 2013-03-24T15:20:38.193 回答
2
$time = strtotime($xml->status[0]->created_at);
$days = (time() - $time) / 86400 //86400 = seconds of one day

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

于 2013-03-24T15:21:43.187 回答
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';
}
于 2013-03-24T15:21:47.660 回答