2010-08-20 30 views

回答

3

我用這個幫手笨(你可以在這裏看到原來:codeigniter forums

我用這個代碼:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

if(! function_exists('relative_time')) 
{ 
    function relative_time($datetime) 
    { 
     if(!$datetime) 
     { 
      return "no data"; 
     } 

     if(!is_numeric($datetime)) 
     { 
      $val = explode(" ",$datetime); 
      $date = explode("-",$val[0]); 
      $time = explode(":",$val[1]); 
      $datetime = mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]); 
     } 

     $difference = time() - $datetime; 
     $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); 
     $lengths = array("60","60","24","7","4.35","12","10"); 

     if ($difference > 0) 
     { 
      $ending = 'ago'; 
     } 
     else 
     { 
      $difference = -$difference; 
      $ending = 'to go'; 
     } 
     for($j = 0; $difference >= $lengths[$j]; $j++) 
     { 
      $difference /= $lengths[$j]; 
     } 
     $difference = round($difference); 

     if($difference != 1) 
     { 
      $period = strtolower($periods[$j].'s'); 
     } else { 
      $period = strtolower($periods[$j]); 
     } 

     return "$difference $period $ending"; 
    } 


} 

我不確定你是否總是希望它說「天」,這段代碼可以做任何最少的事情(比如'49秒前',或'17分鐘前'或'6小時前',或者'10天前',或者幾周或幾個月(甚至幾年)。如果你正在尋找的只是那些日子,那麼很容易就可以改變這個腳本。

+0

完美。謝謝。 – pixeltocode 2010-08-20 13:38:55

0

您可以使用簡單的PHP函數日期爲。 ..

<?php echo date("F j, Y, g:i a"); ?> 
+0

我試圖做的是從發佈日期/時間減去當前的日期/時間並使其顯示爲「貼在X天前」 – pixeltocode 2010-08-20 11:19:24

+0

@pixeltocode - 什麼您發佈日期/時間的格式? – vikmalhotra 2010-08-20 12:58:16

+0

好吧,我實際上沒有發佈它。我只想從mysql中檢索日期。 – pixeltocode 2010-08-20 13:20:57

0

你可以像這樣

$d1 = new DateTime("2013-07-31 10:29:00"); 
$d2 = new DateTime("2013-08-02 5:32:12"); 
echo $d1->diff($d2)->days; 
+0

請爲您的代碼發佈一些解釋,並檢查您發佈的答案是否確實符合OP的要求(請注意對其帖子的修改)。 – 2014-10-02 08:37:16