Correction javascript date et heure
Ludo
-
sangwi -
sangwi -
Bonjour,
Après plusieurs essais, j'ai enfin réussit à afficher sur ma page HTML ce que je voulais, à savoir :
- Le jour de la semaine
- Le jour du mois
- Le mois complet en français
- L'année
- L'heure sans les secondes
L'heure devant se mettre à jour toute les secondes, la date devant changer lorsqu'elle change.
Pouvez-vous me dire si mon code est correct ? :)
Merci ! :D
Edit : Minnce je viens de m'apercevoir que les minutes ne s'affichent pas toujours avec deux chiffres, une idée ? J'arrive pas à mêler tout ce que je trouve sur le net :(
Après plusieurs essais, j'ai enfin réussit à afficher sur ma page HTML ce que je voulais, à savoir :
- Le jour de la semaine
- Le jour du mois
- Le mois complet en français
- L'année
- L'heure sans les secondes
L'heure devant se mettre à jour toute les secondes, la date devant changer lorsqu'elle change.
Pouvez-vous me dire si mon code est correct ? :)
<p>Nous sommes le <span id="jour-sem"></span> <span id="jour"></span> <span id="mois"></span> <span id="annee"></span>, il est <span id="heure"></span></p>
<script type="text/javascript">
function Timer() {
var dt=new Date()
document.getElementById('heure').innerHTML=dt.getHours()+":"+dt.getMinutes();
setTimeout("Timer()",1000);
}
Timer();
var d = new Date();
var days = ["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"];
document.getElementById("jour-sem").innerHTML = days[d.getDay()];
document.getElementById("jour").innerHTML = [d.getDate()];
var months = ["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"];
document.getElementById("mois").innerHTML = months[d.getMonth()];
document.getElementById("annee").innerHTML = [d.getFullYear()];
</script>
Merci ! :D
Edit : Minnce je viens de m'apercevoir que les minutes ne s'affichent pas toujours avec deux chiffres, une idée ? J'arrive pas à mêler tout ce que je trouve sur le net :(
A voir également:
- Correction javascript date et heure
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Changement d'heure - Guide
- Activer correction automatique android - Guide
- Colissimo heure de livraison après-midi - Forum Consommation & Internet
- Séparer date et heure excel - Forum Excel
1 réponse
Salut,
Ton code semble correct.
Pour afficher les minutes sur deux chiffres, le plus simple est de vérifier si le nombre de minutes est inférieur à 10 et d'ajouter le caractère 0 devant si c'est le cas (exemple ci-dessous avec l'écriture ternaire).
Puisque la plus petite unité affichée est la minute et non la seconde, tu peux donc mettre à jour l'heure toutes les minutes plutôt que chaque seconde afin d'optimiser un peu ton script.
Bonne journée,
Ton code semble correct.
Pour afficher les minutes sur deux chiffres, le plus simple est de vérifier si le nombre de minutes est inférieur à 10 et d'ajouter le caractère 0 devant si c'est le cas (exemple ci-dessous avec l'écriture ternaire).
Puisque la plus petite unité affichée est la minute et non la seconde, tu peux donc mettre à jour l'heure toutes les minutes plutôt que chaque seconde afin d'optimiser un peu ton script.
<p>Nous sommes le <span id="jour-sem"></span> <span id="jour"></span> <span id="mois"></span> <span id="annee"></span>, il est <span id="heure"></span></p>
<script type="text/javascript">
function Timer() {
var dt=new Date()
document.getElementById('heure').innerHTML = dt.getHours() + ":" + ((dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes());
setTimeout("Timer()",60000);
}
Timer();
var d = new Date();
var days = ["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"];
document.getElementById("jour-sem").innerHTML = days[d.getDay()];
document.getElementById("jour").innerHTML = [d.getDate()];
var months = ["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"];
document.getElementById("mois").innerHTML = months[d.getMonth()];
document.getElementById("annee").innerHTML = [d.getFullYear()];
</script>
Bonne journée,
Bonne idée de réduire l'intervalle de mise à jour, je n'y avais pas pensé.
Sais-tu pourquoi lorsque je met ce script dans un fichier "script.js" que j'appelle dans le head de mon fichier html, ça ne fonctionne plus ? :/
Peux tu nous montrer tes codes sinon ?
La solution est donc de déplacer la balise <p>Nous sommes le... dans le fichier html et de supprimer les balises script dans le fichier script.js (qui ne doit contenir que le code javascript).
Edit: je n'avais pas vérifier que tu avais déjà bien déplacer l'affichage de l'heure dans le fichier html.
Tu auras par contre un autre problème dû au fait que ton script js est exécuté dès son chargement, le problème étant que lorsque le javascript est chargé et exécuté, ton code html lui n'est pas encore complètement chargé et l'instruction document.getElementById('heure') va retourner une erreur puisque l'élément n'existe pas encore.
La solution est donc de dire à javascript d'attendre le chargement complet de la page avant d'exécuter le script. Le plus simple pour faire cela est de définir une fonction sur l'événement onload de la page.
En résumé ton fichier script.js devrait donc contenir le code suivant :
// on attent que la page soit chargée pour exécuter la fonction initialize() window.onload = initialize; function initialize() { Timer(); var d = new Date(); var days = ["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"]; document.getElementById("jour-sem").innerHTML = days[d.getDay()]; document.getElementById("jour").innerHTML = [d.getDate()]; var months = ["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"]; document.getElementById("mois").innerHTML = months[d.getMonth()]; document.getElementById("annee").innerHTML = [d.getFullYear()]; } function Timer() { var dt = new Date(); document.getElementById('heure').innerHTML = dt.getHours() + ":" + ((dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes()); setTimeout("Timer()",60000); }Une dernière chose, sais-tu si la date se met à jour comme l'heure : toute les minutes ?