Forum de discussion
Forum « Programmation Javascript » (archives)
Re: indiquer une heure différente
Envoyé: 13 septembre 2003, 9h53 par Oznog
Ouf, tu ne sais pas dans quoi tu t'embarque...
Il est effectivement possible de récupérer l'heure UTC ou le temps universel basé à "Greenwich". Et eune bonne chose car l'usager affiche l'heure de sa localité et donc pas d'un lieu en particulier.
Malheureusement le Javascript se contente de retourner l'heure normale! C'est dire qu,on ne sait pas si c'est l'heure normale ou l'heure avancée (d'été).
Ça semble bien simple comme ça, ajouter une heure selon la date mais si tu regarde ça de prêt te va t'appercevoir que c'est loing d'être normalisé. À côté de ça, le 28 février et les années bixextilles est un jeu d'enfant!!!
Alors j'ai personnellement fait beaucoup de travail de ce côté, pour ce qui est de l'amérique et de l'europe c'est passablement simple. Le dernier dimanche de mars pour l'europe et le premier dimanche d'avril pour l'amérique. Et ce pour la plupart des états même s'il y a bien sûr des exception, même des exception par état américain! Même chose mais à l'inverse pour remettre l'heure normale en Automne.
Mais si tu veux appliquer ça pour la planête en entier tu va avoir 36 milles exceptions, Il y a même des pays qui avance d'une demi heure!!! Ou encore le changement ne se fait pas toujours à 1h00 de la nuit, parfois c'est 2h00 ET PIRE, parfois on change l'heure à 1h00 local d'autre fois à 1h00 de "Greenwich". ET C'EST l'A LE RÔLE DE L'HEURE UTC sinon pourqoui en avoir besoin si les usagers sont local.
Juste pour te donner une idée, mon tableau (array) qui contient toutes ces exception à 394 entrés! Et ce n'est que les principales! Le script pour seulement retourner l'heure UTC réel en tenant compte de ces exception fait 600 lignes de code! Je devrais le mettre enm ligne une jour.
En d'autre mots, c'est pratiquement plus simple de trouver le pays de l'usager et d'ainsi ajouter ou soustraire un nombre d'heure pour retrouver l'heure UTC manuellement! Mais ça aussi c'est une autre histoire. On est jamais sûr à 100% du pays de l'usager.
En attendant, je te conseil d'utiliser ce petit script que je vient de faire, il calcule l'heure selon l'UTC sans prendre en compte l'heure d'été. Tu pourais y ajouter facilement un simple ajustement basé sur une date fixe, fin Mars par exemple, l'heure ne sera pas bonne que quelques heures par année. OU ENCORE ajuster manuellement une variable deux fois par année, à 1 ou à 0 selon la saison.
Voilà le petit code...
<html>
<head>
<title>Trucsweb - Heure UTC</title>
<script type="text/javascript" language="javascript">
function twAfficheHeure() {
// Affiche 3 dates selon l'heure Universel (UTC)
// Greenwich, Paris et +3
// Script gratuit des TRUCSWEB.COM
// Ne supporte pas les heures d'été
var maDate = new Date();
var maDate1 = new Date(maDate.getYear(), maDate.getUTCMonth(), maDate.getUTCDate(), maDate.getUTCHours()+0, maDate.getUTCMinutes(), maDate.getUTCSeconds());
var maDate2 = new Date(maDate.getYear(), maDate.getUTCMonth(), maDate.getUTCDate(), maDate.getUTCHours()+1, maDate.getUTCMinutes(), maDate.getUTCSeconds());
var maDate3 = new Date(maDate.getYear(), maDate.getUTCMonth(), maDate.getUTCDate(), maDate.getUTCHours()+3, maDate.getUTCMinutes(), maDate.getUTCSeconds());
document.getElementById("date1").innerHTML = twHeure(maDate1);
document.getElementById("date2").innerHTML = twHeure(maDate2);
document.getElementById("date3").innerHTML = twHeure(maDate3);
delais = setTimeout("twAfficheHeure()",1000);
}
function twHeure(_date) {
// Retourne l'heure formaté d'une date
// Script gratuit des TRUCSWEB.COM
var sH = _date.getHours();
sH = sH < 10 ? '0' + sH : sH;
var sM = _date.getMinutes();
sM = sM < 10 ? '0' + sM : sM;
var sS = _date.getSeconds();
sS = sS < 10 ? '0' + sS : sS;
return sH + ':' + sM + ':' + sS;
}
// -->
</script>
<style>
.heure {
font-family: Arial, Helvetica, sans-serif;
font-size:9.5pt;
color: #333;
background-color:#ccc;
border: 1px solid blue;
padding: 1em; text-align: center;
}
</style>
</head>
<body onload="twAfficheHeure()">
<h3>Heure (Temps Universel, UTC)</h3>
<h4>Heure davancée d'été non-supporté</h4>
<table><tr><th>Greenwich</th><th>France</th><th>+3</th></tr><tr>
<td><div id="date1" class="heure"></div></td>
<td><div id="date2" class="heure"></div></td>
<td><div id="date3" class="heure"></div></td>
</tr></table>
</body>
</html>
Ciao
Oznog
Réponses
|