Salut tout le monde,
est ce que quelqu'un sais comment faire pour afficher le temps écoulé entre la date d'un post et la date courante ( time() ) comme pour le forum de Grafikart. Exemple : Il y a 1 heure, 57 minutes. J'ai trouvé une fonction :

// -------------------------------------------------------------------------
  /**
  * Affiche une date relative sous la forme il y a x jours/heures/minutes/secondes
  *
  * @name relative_time
  * @param int $iTime : timestamp à convertir
  * @return string
  **/
  function relative_time( $iTime = 0 ) {
    $iTimeDifference = time() - $iTime;
    if( $iTimeDifference<0 ) { return; }
    $iSeconds = $iTimeDifference ;
    $iMinutes = round( $iTimeDifference/60 );
    $iHours = round( $iTimeDifference/3600 );
    $iDays = round( $iTimeDifference/86400 );
    $iWeeks = round( $iTimeDifference/604800 );
    $iMonths = round( $iTimeDifference/2419200 );
    $iYears = round( $iTimeDifference/29030400 );
    if( $iSeconds<60 )
      return "Il y a moins d'une minute";
    elseif( $iMinutes<60 )
      return 'Il y a ' . $iMinutes . ' minute' . ( $iMinutes>1 ? 's' : » );
    elseif( $iHours<24 )
      return 'Il y a ' . $iHours . ' heure' . ( $iHours>1 ? 's' : » );
    elseif( $iDays<7 )
      return 'Il y a ' . $iDays . ' jour' . ( $iDays>1 ? 's' : » );
    elseif( $iWeeks <4 )
      return 'Il y a ' . $iWeeks . ' semaine' . ( $iWeeks>1 ? 's' : » );
    elseif( $iMonths<12 )
      return 'Il y a ' . $iMonths . ' mois';
    else
      return 'Il y a ' . $iYears . ' an' . ( $iYears>1 ? 's' : » );
  }

Mais le problème c'est qu'elle n'affiche que le nombre de jour ou seulement le nombre d'heure ou le nombre d'année ...etc.
Merci d'avance.

2 réponses


Nairolf
Réponse acceptée

Pourtant la fonction semble bonne je vois pas trop le problème, surtout quel est claire, enfin si tu as compris le système tu peux vite le refaire, sinon en fait ça compare le timestamp du post moins celui de maintenant, le timestamp étant le nombre de secondes écoulées depuis le 1er Janvier 1970 si je ne me trompe pas, en gros si la différence des deux est inférieur à 60, c'est il y a moins d'une minutes, si c'est en dessous de 3600 (60*60) c'est il y a une heure, et ainsi de suite.

wYm
Auteur

Merci c'est bon j'ai trouvé la solution