Fonction "Il y a " non compatible avec time() et erreur de timestamp
Posté : 04 oct. 2019, 20:12
Bonjour,
je viens vers vous car j'ai un gros problème que je n'arrive pas à régler, j'ai créé un site et souhaitait afficher les dates de sorte à ce que hier est "Il y a 1 jour" par exemple.
J'ai pour cela trouvé une fonction DateHelper sur le net qui m'a bien aidé, mais celle-ci n'est pas compatible avec le time() car peu importe la valeur elle y affiche '1er janvier 1970' ce qui est problématique. J'ai donc trouvé une solution alternative qui est de mettre la valeur de ma date_creation dans la db en timestamp et la valeur par défaut CURRENT_TIMESTAMP, cependant celle-ci affiche "Il y a -6698 secondes" peu importe le sujet
Pouvez-vous m'aider à faire en sorte que ma fonction soit compatible avec un time() ??
la voici:
je viens vers vous car j'ai un gros problème que je n'arrive pas à régler, j'ai créé un site et souhaitait afficher les dates de sorte à ce que hier est "Il y a 1 jour" par exemple.
J'ai pour cela trouvé une fonction DateHelper sur le net qui m'a bien aidé, mais celle-ci n'est pas compatible avec le time() car peu importe la valeur elle y affiche '1er janvier 1970' ce qui est problématique. J'ai donc trouvé une solution alternative qui est de mettre la valeur de ma date_creation dans la db en timestamp et la valeur par défaut CURRENT_TIMESTAMP, cependant celle-ci affiche "Il y a -6698 secondes" peu importe le sujet
Pouvez-vous m'aider à faire en sorte que ma fonction soit compatible avec un time() ??
la voici:
Code : Tout sélectionner
<?php
class DateHelper {
function format($datetime) {
$now = time();
$created = strtotime($datetime);
// La différence est en seconde
$diff = $now-$created;
$m = ($diff)/(60); // on obtient des minutes
$h = ($diff)/(60*60); // ici des heures
$j = ($diff)/(60*60*24); // jours
$s = ($diff)/(60*60*24*7); // et semaines
if ($diff < 60) { // "il y a x secondes"
return 'Il y a '.$diff.' secondes';
}
elseif ($m < 60) { // "il y a x minutes"
$minute = (floor($m) == 1) ? 'minute' : 'minutes';
return 'Il y a '.floor($m).' '.$minute;
}
elseif ($h < 24) { // " il y a x heures, x minutes"
$heure = (floor($h) <= 1) ? 'heure' : 'heures';
return 'Il y a '.floor($h).' '.$heure;
}
elseif ($j < 7) { // " il y a x jours, x heures"
$jour = (floor($j) <= 1) ? 'jour' : 'jours';
return 'Il y a '.floor($j).' '.$jour;
}
elseif ($s < 5) { // " il y a x semaines, x jours"
$semaine = (floor($s) <= 1) ? 'semaine' : 'semaines';
return 'Il y a '.floor($s).' '.$semaine;
}
else { // on affiche la date normalement
return strftime("%d %B %Y à %H:%M", $created);
}
}
}
?>