2010-08-20 5 views

ответ

3

Я использую этот помощник для Codeigniter (вы можете увидеть оригинал здесь: 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

0

Вы можете использовать простую дату функции PHP для этого. ..

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

То, что я пытаюсь сделать, это вычесть текущую дату/время с публикуемых датами/времени и отображать его как «отправил е дни назад» – pixeltocode

+0

@pixeltocode - что формат, в котором вы публикуете дату/время? – vikmalhotra

+0

ну, я на самом деле не отправляю его. Я просто хочу получить дату из mysql. – pixeltocode

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 (обратите внимание на редактирование на свой пост). –

Смежные вопросы