Interval entre 2 dates

Par cid5420, il y a 10 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Je dois afficher un interval entre la date(now) et la date de l'enregistrment pour afficher ex (il a 2min)
J'ai écri un code en me basant sur la doc php, celui-ci fonctionne en local mais pas en distant (avec la même version de php)

J'ai ma class :

class Date { public function timeInterval($date1, $date2 = '') { if($date2 === ''){ $now = time(); }else{ $dat2 = time($date2); $now = $dat2; } $time1 = time($date1); $interval = $this->time_elapsed_B($now-$time1); return $interval; } function time_elapsed_A($secs){ $bit = array( 'y' => $secs / 31556926 % 12, 'w' => $secs / 604800 % 52, 'd' => $secs / 86400 % 7, 'h' => $secs / 3600 % 24, 'm' => $secs / 60 % 60, 's' => $secs % 60 ); foreach($bit as $k => $v) if($v > 0)$ret[] = $v . $k; } function time_elapsed_B($secs){ $bit = array( ' an' => $secs / 31556926 % 12, ' semaine' => $secs / 604800 % 52, ' jour' => $secs / 86400 % 7, ' heure' => $secs / 3600 % 24, ' minute' => $secs / 60 % 60, ' seconde' => $secs % 60 ); foreach($bit as $k => $v){ if($v > 1)$ret[] = $v . $k . 's'; if($v == 1)$ret[] = $v . $k; } array_splice($ret, count($ret)-1, 0, 'et'); $ret[] = ''; return join($ret, ' '); } function unix_timestamp($date) { $date = str_replace(array(' ', ':'), '-', $date); $c = explode('-', $date); $c = array_pad($c, 6, 0); array_walk($c, 'intval'); return mktime($c[3], $c[4], $c[5], $c[1], $c[2], $c[0]); } }

Ensuite je l'utilise dans mon code de cette façon :

$mouvdate = new \Core\Date\Date(); $datenow = new DateTime(); $datepost = $m->date; $now = date_timestamp_get($datenow); $date = $mouvdate->unix_timestamp($datepost); $interval = $mouvdate->time_elapsed_A($now-$date);

sur le serveur $interval me retourne NULL

3 réponses

cid5420, il y a 10 ans

Euh non mais j'ai trouvé : pour ceux que ça interresse j'ai oublier de retourner le tableau dans ma fonction.
Code corrigé :

class Date { public function timeInterval($date1, $date2 = '') { if($date2 === ''){ $now = time(); }else{ $dat2 = time($date2); $now = $dat2; } $time1 = time($date1); $interval = $this->time_elapsed_B($now-$time1); return $interval; } function time_elapsed_A($secs){ $bit = array( 'y' => $secs / 31556926 % 12, 'w' => $secs / 604800 % 52, 'd' => $secs / 86400 % 7, 'h' => $secs / 3600 % 24, 'm' => $secs / 60 % 60, 's' => $secs % 60 ); foreach($bit as $k => $v){ if($v > 0){ $ret[] = $v . $k; } } $ret[] = ''; return join($ret, ' '); } function time_elapsed_B($secs){ $bit = array( ' an' => $secs / 31556926 % 12, ' semaine' => $secs / 604800 % 52, ' jour' => $secs / 86400 % 7, ' heure' => $secs / 3600 % 24, ' minute' => $secs / 60 % 60, ' seconde' => $secs % 60 ); foreach($bit as $k => $v){ if($v > 1)$ret[] = $v . $k . 's'; if($v == 1)$ret[] = $v . $k; } array_splice($ret, count($ret)-1, 0, 'et'); $ret[] = ''; return join($ret, ' '); } function unix_timestamp($date) { $date = str_replace(array(' ', ':'), '-', $date); $c = explode('-', $date); $c = array_pad($c, 6, 0); array_walk($c, 'intval'); return mktime($c[3], $c[4], $c[5], $c[1], $c[2], $c[0]); } }
cid5420, il y a 10 ans

Merci, je connaissais pas du coup je vais regarder de plus près