自发布以来已过去的时间

时间:2014-01-17 10:52:23

标签: php date time

我一直试图让这段代码正常工作 - 基本上我想显示自那时起过去的时间,并通过从当前时间减去它来发布文章。我几乎得到了它,我发现下面的代码,除了分钟和秒钟之外一切正常。我可以弄清楚为什么它没有显示秒或分钟(如果适用)。只是为了清除每篇文章,显示适用的经过时间,如果<它应该显示多少秒,>然后应该显示分钟等

我的代码是

    <?php  
    $today = time();
    $post = $item->created;
             $createdday= strtotime($post); //convert $post to unix timestamp
             $datediff = abs($today - $createdday);  
             $difftext="";  
             $years = floor($datediff / (365*60*60*24));  
             $months = floor(($datediff - $years * 365*60*60*24) / (30*60*60*24));  
             $days = floor(($datediff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));  
             $hours= floor($datediff/3600);  
             $minutes= floor($datediff/60);  
             $seconds= floor($datediff);  
             //year checker  
             if($difftext=="")  
             {  
               if($years>1)  
                $difftext=$years." years ago";  
               elseif($years==1)  
                $difftext=$years." year ago";  
             }  
             //month checker  
             if($difftext=="")  
             {  
                if($months>1)  
                $difftext=$months." months ago";  
                elseif($months==1)  
                $difftext=$months." month ago";  
             }  
             //month checker  
             if($difftext=="")  
             {  
                if($days>1)  
                $difftext=$days." days ago";  
                elseif($days==1)  
                $difftext=$days." day ago";  
             }  
             //hour checker  
             if($difftext=="")  
             {  
                if($hours>1)  
                $difftext=$hours." hours ago";  
                elseif($hours==1)  
                $difftext=$hours." hour ago";  
             }  
             //minutes checker  
             if($difftext=="")  
             {  
                if($minutes>1)  
                $difftext=$minutes." minutes ago";  
                elseif($minutes==1)  
                $difftext=$minutes." minute ago";  
             }  
             //seconds checker  
             if($difftext=="")  
             {  
                if($seconds>1)  
                $difftext=$seconds." seconds ago";  
                elseif($seconds==1)  
                $difftext=$seconds." second ago";  
             }  
             echo " <span class=timediff> | ".$difftext . "</span>";  ?> 

我的例子是http://www.landnsand.co.za/dev/test/幻灯片下面的最新阅读模块。

任何建议或建议为什么秒和分钟可能无法正常工作将不胜感激!我已经搜索过高低,并尝试了很多选项,但必须遗漏一些东西。

谢谢,乔希

2 个答案:

答案 0 :(得分:0)

使用示例:

echo time_elapsed_string('2013-05-01 00:22:35');
echo time_elapsed_string('2013-05-01 00:22:35', true);

输出:

4 months ago
4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago

<强> Link to the function.

答案 1 :(得分:-1)

<?php
$dt = new DateTime();
$dt->setTimestamp(1389956508); // timestamp of creation (example)
$dt2 = new DateTime();
$dt2->setTimestamp(time()); // timestamp now
$interval = $dt->diff($dt2, true);
echo $interval->format('%i minutes ago');
?>

输出(例如):

2 minutes ago

这只是一个例子。因此,以这种方式使用它非常容易。