Créer un Chrono avec MySQL PHP

Répondre
Sarti
le 09/10/2011 à 17:54
Sarti
J’ai la date suivante de ma base de données $row['dte'] sous la forme 2011-10-09 10:43:29
Comment créer un chrono qui démarre à partir de cette date/heure et afficher par exemple : depuis 5 secondes, 5 minutes ou 5 heures.
Merci à vous.
LupusMic
le 21/10/2011 à 16:35
LupusMic
Tu peux être plus précis dans ton besoin ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Sarti
le 23/10/2011 à 19:53
Sarti
OK, je voudrais créer un chronomètre en PHP pas à partir de maintenant (NOW), mais plutôt à partir d'une heure donnée (heure extraite de ma base de données par exemple).
LupusMic
le 24/10/2011 à 00:59
LupusMic
Qu'est-ce qu'un chronomètre pour toi ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Sarti
le 24/10/2011 à 22:37
Sarti
Un instrument de précision qui sert à mesurer le temps en minutes, secondes et fractions de secondes.
je voudrais savoir en effet comment Tweeter et les autres font pour afficher la durée d'un tweet « depuis 2h 5 min » par exemple, mais avec un décompte des secondes.
Peux-tu m'aider à réaliser cette tâche LupusMic ?
LupusMic
le 30/10/2011 à 01:39
LupusMic
Ah ben voilà, on avance :) Je suis désolé de ne pas venir plus souvent, je suis malheureusement très occupé.

Tout d'abord, « instrument de précision » est une très drôle blague dans le contexte du Web ;)

Les sites qui affichent un temps utilisent des astuces et des approximations.

Allé, un exemple pour t'aider :
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type='application/javascript'>
window.timer = (function()
{
var impl = { } ;
impl.reference = null;
impl.start = function() { impl.reference = new Date };
impl.setReference = function() { impl.reference = arguments[0] } ;
impl.getElapsedTime = function()
{
var now = new Date ;
var elapsed = Math.round((now.getTime() - this.reference.getTime()) / 1000) ;

return { days: 0
, hours: 0
, minutes: 0
, seconds: elapsed
} ;
} ;

var proto = function() {};
proto.prototype = impl;
return proto ;
})();

var init = function()
{
var clock = new timer ;
clock.setReference(new Date) ;
var element = document.getElementById('clock') ;

var fn = function() {
var elapsed = clock.getElapsedTime() ;
element.textContent = elapsed.seconds + ' secondes' ;
setTimeout(fn, 1000);
}
fn();
}

addEventListener('load', init) ;
</script>
</head>
<body>
Depuis <span id='clock'></span>
</body>
</html>
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Sarti
le 30/10/2011 à 14:39
Sarti
Merci, c’est un chrono vraiment magnifique mais seulement l’ennui c’est que je le voulais en PHP.

Maintenant comment lui passer un paramètre pour qu’il démarre selon une date/heure extraite d’une base de données.

Mon chrono ne devrait pas être obligé de démarrer dès l’instant présent, tu vois ce que je veux dire ?

Merci de ton aide.
LupusMic
le 30/10/2011 à 17:47
LupusMic
La classe JS n'est pas terminée, et la fonction init qui est lancée au chargement de la page, est un exemple d'usage de la classe.

Je ne vais quand même pas tout te faire :p

La classe part du principe suivant : la fonction setReference permet de définir la date de départ du comptage (ceci peut ne pas être maintenant, mais une autre date). La fonction getElapsedTime retourne le temps passé depuis la référence.

En fait, c'est bien ce que je pensais depuis le départ : tu ne veux pas un chronomètre :p
Côté PHP, ce que tu feras ne sera pas fondamentalement différent de ce que je t'ai montré avec cette démo en JS. Découpe le problème en sections plus simples, et traite un problème après l'autre.

Le plus gros problème sera la détermination des écarts de temps, le fameux elapsed time. Si tu regarde ma démo, tu constatera que je ne retourne la différence qu'en terme de secondes écoulées. Parce que le choix du retour de l'écart en terme d'heures peut demander des choix à justifier. Du genre : est-ce que je prends en compte les changement d'heure ? :D
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours