我正在推送一个包含这些日期的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提要日期完全错误了?
提前致谢!
答案 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