两个变量RSS日期之间的差异以天为单位

时间:2013-04-19 10:44:37

标签: php rss strtotime

我正在推送一个包含这些日期的RSS源:

<rss>
 <channel>
  <lastBuildDate>Thu, 18 Apr 2013 16:14:15 GMT</lastBuildDate>  

<item>
<pubDate>Fri, 05 Apr 2013 14:25:13 GMT</pubDate>  
</item>

<item>
<pubDate>Wed, 05 Sep 2012 10:01:27 GMT</pubDate>  
</item>

我试图计算每个项目的lastBuildDate和pubdate之间的差异。

到目前为止,我有这个:

<?php
foreach($rss->channel->item as $item){

  $rss->channel->lastBuildDate = date('D, d M Y H:i:s GMT', strtotime($date1));
  $item->pubDate = date('D, d M Y H:i:s GMT', strtotime($date2));
  $dateDiff    = $date1 - $date2;   
  $fullDays    = floor($dateDiff/(60*60*24));   
  echo "Differernce is $fullDays days";

  ?>

不幸的是,每件商品都会产生0天的差异。我知道$ date1和$ date2没有对RSS提要的引用,但考虑到该行的前半部分,是否还需要RSS路径?或者我首先将RSS提要日期完全错误了?

提前致谢!

4 个答案:

答案 0 :(得分:1)

试试这个

  $dStart = new DateTime(date('2012-07-26'));
   $dEnd  = new DateTime(date('2012-08-26'));
   $dDiff = $dStart->diff($dEnd);
   echo $dDiff->format('%R');
   echo $dDiff->days;

答案 1 :(得分:0)

  $date1 = 'Thu, 18 Apr 2013 16:14:15 GMT';
  $date2 = 'Wed, 05 Sep 2012 10:01:27 GMT';

  $dateDiff    = strtotime($date1) - strtotime($date2);   
  $fullDays    = floor($dateDiff/(60*60*24));   
  echo "Differernce is $fullDays days";

答案 2 :(得分:0)

您应该将strtotime($date1)strtotime($date2)进行比较。

strtotime将(几乎)任何给定日期转换为UnixTimestamp(http://en.wikipedia.org/wiki/Timestamp)。 UnixTimestamps以秒为单位计算unix时代开始的秒数。 如果你比较这两个,你将获得以秒为单位输出的差异。

$diff = strtotime($date1) - strtotime($date2);
$fulldays = floor($diff/86400); //one day = 86400 seconds

答案 3 :(得分:0)

您可以通过使用strtotime function

比较两个日期来做到这一点
$lastBuildDate = $rss->channel->lastBuildDate;
$pubDate = $item->pubDate;

$lb = strtotime($lastBuildDate);
$pd = strtotime($pubDate);

$differnce = $pd - $lb;
echo floor($differnce/(60*60*24)) . ' days difference';

这将输出

212 days difference