Bonjour,
Dans ma base de donnée j'enregistre une date que je veux réutiliser a un autre moment dans mon site.
Pour faire plus "joli", je veux qu'à la place d'afficher la date et l'heure, on m'indique la différence avec maintenant.
Pour récupérer la différence, j'utilise la fonction SQL TIMEDIFF
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $req = $db->prepare("SELECT TIMEDIFF(NOW(), date_mod) as date_ago FROM f_version WHERE file = ? ORDER BY num DESC"); $req->execute(array($id_file));
Ce qui me donne une réponse sous l format heures:minutes:secondes
Avec des substr() j'arrive à extraire les chiffres que je veux mais j'ai un problème si la différence de plus de 100h (ce qui risque d'arriver)
Dans ma fonction, je m'amuse à toujours faire des comparaisons du style
Mais le problème est si j'ai plus de 100h, par exemple 125:00:00 est plus petit que 24:00:00 et donc j'obtiendrai "12 hours ago"
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if ($date <= '00:01:00') { return "a few secondes ago"; } elseif ($date < '01:00:00') { return intval(substr($date,3,2))." minutes ago"; } elseif ($date < '02:00:00') { return "one hour ago"; } elseif ($date < '24:00:00') { return intval(substr($date,0,2))." hours ago"; }
Est-ce qu'il n'existe pas un moyen de manipuler les dates plus facilement (en sql ou php) qu'en devant chipoter ainsi avec la chaine de caractères ?
merci
Partager