Bonjour, j'ai fait un amalgame de script pour obtenir un chronometre qui affiche la différence de temps écoulé depuis une date php antérieur et la date actuelle du serveur. Le script marche très bien, le seul problème est que plus le temps passe, plus le compteur cumule du retard. Un délais de 2 secondes toutes les 30 secondes environs.
voici le monstre :
<script type="text/javascript">
<?
$debut = explode(" ", $infoTache["DebutTravail"]);
$nbJours = explode("-", $debut[0]);
$HMS = explode(":", $debut[1]);
?>
//va chercher l'heure du debut tâche
var maintenant = new Date ("<?echo $nbJours[2].", ".$nbJours[1].", ".$nbJours[0]." ".$HMS[0].":".$HMS[1].":".$HMS[2];?>");
var Start = maintenant.getTime();
function affiche_heure() {
var secondes_abs = Math.abs(Math.round(calcul_temps()));
var secondes_rel = secondes_abs % 60;
var minutes_abs = Math.abs(Math.round((secondes_abs-30)/60));
var nombre_secondes ="" + ((secondes_rel > 9) ? secondes_rel : "0" + secondes_rel);
var nombre_minutes ="" + ((minutes_abs > 9) ? minutes_abs : "0" + minutes_abs);
document.affD.ejs_heure.value= nombre_minutes + ":" + nombre_secondes;
window.setTimeout('affiche_heure()',1000);
}
window.onload = affiche_heure;
function calcul_temps() {
//encore et tjrs est la var du temps réel qui se rafraichit
var encore_toujours = HeureCheckEJS();
return((encore_toujours.getTime()- Start)/1000);
}
//détermination de l'heure du serveur au moment de l'affichage
var jourS = <?php echo date('j'); ?>;
var moisS = <?php echo date('n'); ?>;
var anneeS = <?php echo date('Y'); ?>;
var heureS = <?php echo date('H'); ?>;
var minS = <?php echo date('i'); ?>;
var secS = <?php echo date('s'); ?>;
//incrémente l'heure actuel a partir de l'heure obtenu du serveur
function HeureCheckEJS()
{
if (secS >= 59)
{
secS = 0;
if (minS>= 59)
{
minS = 0;
if (heureS >= 23)
heureS = 0;
else
heureS++;
}
else
minS++;
}
else
secS++;
DinaHeure = new Date(jourS +','+ moisS + ','+ anneeS+ ' '+ heureS + ":" + minS + ":" + secS);
which = DinaHeure
return DinaHeure
setTimeout("HeureCheckEJS()", 1000)
}
</script>
Pouvez-vous me dire à quoi cela est du?
merci