2016-01-29 5 views
0

в моей моделикак конвертировать минуты в часы, часы в дни

$this->db->select('message,TIMESTAMPDIFF(MINUTE,date_added,CURRENT_TIMESTAMP) AS minutes_passed'); 
    $this->db->from('activity_logs'); 
    $this->db->order_by('log_id','desc'); 
    $this->db->limit(20); 
    $q = $this->db->get(); 
    return $q->result_array(); 

в контроллере

$data['logs'] = $this->common_model->get_logs(); 

    foreach ($data['logs'] as $k) { 
     echo 'total minutes'.$k['minutes_passed']."<br>";//output total minutes "21410" 
     } 

У меня есть общее количество минут и я хочу, чтобы получить общее количество часов, связанные с минутами, а затем часов для конвертации в общие дни. Надеюсь, что кто-нибудь сможет провести меня через это. Спасибо.

+1

Возможного дубликат [Преобразовать количество минут в часы и минуты, используя PHP] (Http: // stackoverflow.com/questions/8563535/convert-number-of-minutes-into-hours-minutes-using-php) – fusion3k

+1

Все, что вам нужно сделать, это математика. Я думаю, вы узнали об этом в школе. –

+0

Попробуйте: '$ hours = floor (21410/60); $ days = round ($ hours/24); ' –

ответ

2

Попробуйте эту функцию,

& Измените его с вашими требованиями

function con_min_days($mins) 
    { 

      $hours = str_pad(floor($mins /60),2,"0",STR_PAD_LEFT); 
      $mins = str_pad($mins %60,2,"0",STR_PAD_LEFT); 

      if((int)$hours > 24){ 
      $days = str_pad(floor($hours /24),2,"0",STR_PAD_LEFT); 
      $hours = str_pad($hours %24,2,"0",STR_PAD_LEFT); 
      } 
      if(isset($days)) { $days = $days." Day[s] ";} 

      return $days.$hours." Hour[s] ".$mins." Min[s]"; 
    } 
+0

спасибо большое. спасибо за усилия :) –

0

Я думаю, вы должны просто получить дату из базы данных, и сделать все это в PHP:

$now = new DateTime; 
$date_added = new DateTime; 
$date_added->setTimestamp(date_added); 

$diff = $now->diff($date_added); 

Затем вы можете напечатать:

sprintf("Temps écoulé : %d jours, %d minutes et %d seconds"; $diff->d, $diff->h, $diff->s); 

PS: вы не должны хранить timestamp в вашей базе данных, но дату с использованием типа поля DATE или DATETIME.

+0

поблагодарить u за помощь :) –

0

выберите поле из базы данных, как UNIX_TIMESTAMP(date_added) as create_date

добавить эту функцию

private function time_elapsed_string($ptime) 
{ 
    $etime = time() - $ptime; 
    if ($etime < 1){ 
     return '0 seconds'; 
    } 
    $a = array(365 * 24 * 60 * 60 => 'year', 
       30 * 24 * 60 * 60 => 'month', 
         24 * 60 * 60 => 'day', 
          60 * 60 => 'hour', 
           60 => 'minute', 
           1 => 'second' 
       ); 
    $a_plural = array('year' => 'years', 
         'month' => 'months', 
         'day' => 'days', 
         'hour' => 'hours', 
         'minute' => 'minutes', 
         'second' => 'seconds' 
       ); 
    foreach ($a as $secs => $str){ 
     $d = $etime/$secs; 
     if ($d >= 1){ 
      $r = round($d); 
      return $r . ' ' . ($r > 1 ? $a_plural[$str] : $str) . ' ago'; 
     } 
    } 
} 

и использовать его, как это :

echo $this->time_elapsed_string($item->create_date) 

O/P:

2 hour ago 
5 days ago 

зависит от времени в миллисекундах вы прошли в функции

+0

спасибо за помощь :) –

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