Bonjour à tous !

Je rencontre un soucis en javascript et sollicite votre aide.

En fait, j'ai un compte a rebours auquel je voudrais remplacer la date du PC par la date du serveur.

En fait, si le PC n'est pas à jour, le compte a rebours est faux parce qu’à une heure précise le script doit afficher une <div>.

J'ai cherché du côté de "gettimezoneoffset" .

Je n'arrive pas à adapter mon code et j'ai cherché du côté JSon qui ne réponds pas non plus à mes attentes.

Pouvez-vous m'aider svp ? Voici mon code :

<div id="after">
    <span id="dhour"></span>:<span id="dmin"></span>:<span id="dsec"></span>
</div>
<div id="count2">Texte à afficher</div>

<div class="numbers" id="dday" hidden="true"></div>

<script>
var ladate=new Date()

var year=ladate.getFullYear();
var month=ladate.getMonth()+1;
var day=ladate.getDate();
var hour=9;
var minute=10;
var tz=0;

var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

function countdown(yr,m,d,hr,min){
theyear=yr;themonth=m;theday=d;thehour=hr;theminute=min;
var today= new Date();
var todayy=today.getYear();
if (todayy < 1000) {todayy+=1900; }

var todaym=today.getMonth();
var todayd=today.getDate();
var todayh=today.getHours();
var todaymin=today.getMinutes();
var todaysec=today.getSeconds();
var todaystring1=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec;
var todaystring=Date.parse(todaystring1)+(tz*1000*60*60);
var futurestring1=(montharray[m-1]+" "+d+", "+yr+" "+hr+":"+min);
var futurestring=Date.parse(futurestring1)-(today.getTimezoneOffset()*(1000*60));
var dd=futurestring-todaystring;
var dday=Math.floor(dd/(60*60*1000*24)*1);
var dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1);
var dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
var dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);

if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=0){
document.getElementById('count2').style.display="inline";
document.getElementById('after').style.display="none";

document.getElementById('dday').style.display="none";
document.getElementById('dhour').style.display="none";
document.getElementById('dmin').style.display="none";
document.getElementById('dsec').style.display="none";
document.getElementById('days').style.display="none";
document.getElementById('hours').style.display="none";
document.getElementById('minutes').style.display="none";
document.getElementById('seconds').style.display="none";
return;
}else {
document.getElementById('count2').style.display="none";
document.getElementById('dday').innerHTML=dday;
document.getElementById('dhour').innerHTML=dhour;
document.getElementById('dmin').innerHTML=dmin;
document.getElementById('dsec').innerHTML=dsec;
setTimeout("countdown(theyear,themonth,theday,thehour,theminute)",1000);}
}

countdown(year,month,day,hour,minute);
</script>

Le principe est simple. Je suis en train de faire un jeu sur mon site web et avant le jeu il y a un compte à rebours. Ce que je veux faire c'est: Le compte à rebours doit faire un décompte pour arriver à une heure précise par exemple : A 10h10, le jeu se lancera, et en dessous il y a le compte à rebours qui tourne et dès que le compte à rebours est nul (c'est à dire qu'il est 10h10) le jeu se lance et le compte à rebours disparaît...

Voila un peu ce que je compte faire.

Mon soucis: Pendant que le compte à rebours passe, si je change l'heure de mon PC, le compte à rebours changera aussi...

Merci.

1 réponse


Salut, je ne suis pas un pro mais c'est un peu normal ton truc. Ton javascript s'exécute sur la machine, il est donc normal que ta Date() soit celle du PC ... tu devrais simplement faire une requète au serveur pour obtenir SA date() et ensuite tu fais un décompte sur la date reçue ...