2015-11-30 6 views
0

У меня есть метки времени в миллисекундахПреобразование миллисекунды метки времени назад меток времени

$update = 1448895141168.

Я изо всех сил пытаюсь преобразовать это время в человекообразное время (назад).

Пример: 1 час 3 минуты назад.


Я пытался использовать эту функцию в моем контроллере

public 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'; 
      } 
     } 
    } 

назвав его

 $update = $device->last_updated_utc_in_secs; 
     $ptime = date($update); 
     dd($this->time_elapsed_string($ptime)); //"0 seconds" 

я продолжал получать 0 секунд.

+0

Dupe: http://stackoverflow.com/questions/1416697 –

+0

Извините, я обновил свой пост. Это миллисекунды, а не временная отметка unix. Если они не совпадают. Я не уверен. – ihue

ответ

4

Ваша проблема здесь:

$etime = time() - $ptime; 

time() всегда возвращает метку времени UNIX, которая является секунд прошло с тех пор Unix Epoch (1 января 1970 00:00:00 GMT). Если вы вычтите значение миллисекунды (например, 1448895141168), вы всегда получите что-то отрицательное (< 0) - так что ваше первое условие if срабатывает и возвращается из метода. Просто разделите свое входное значение на 1000 (от миллисекунд до нескольких секунд), и вам хорошо идти.

+0

Я отвечу на ваш ответ через 4 минуты. Он работает отлично. – ihue

+0

хороший ответ, ты спас меня;) –