Convertir l’horodatage en millisecondes à l’horodatage

J’ai un horodatage en millisecondes

$update = 1448895141168 .

Je me bats pour essayer de convertir ce temps en un temps lisible par l’homme (il y a).

Exemple, il y a 1 heure 3 minutes .


J’ai essayé d’utiliser cette fonction dans mon contrôleur

 public function time_elapsed_ssortingng($ptime) { $etime = time() - $ptime; if ($etime  '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'; } } } 

l’appelant

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

J’ai continué à obtenir 0 seconde.

Votre problème est ici:

 $etime = time() - $ptime; 

time() renvoie toujours l’horodatage UNIX qui correspond aux secondes écastings depuis l’époque Unix (1 janvier 1970 00:00:00 GMT). Si vous soustrayez une valeur en millisecondes (telle que 1448895141168 ), vous obtiendrez toujours quelque chose de négatif ( < 0 ) - donc votre première condition if intervient et retourne de la méthode. Il suffit de diviser votre valeur d'entrée par 1000 (millisecondes en secondes) et vous êtes prêt à partir.