IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Afficher l'heure dans un fuseau horaire


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Afficher l'heure dans un fuseau horaire
    Bonjour,

    J'ai trouvé la fonction suivante (je ne sais plus où) et je voudrais la faire fonctionner pour un fuseau horaire quelconque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    		function UR_Start() 
    		{
    			UR_Nu = new Date();
    			//UR_Indhold = showFilled(UR_Nu.getHours()) + ":" + showFilled(UR_Nu.getMinutes()) + ":" + showFilled(UR_Nu.getSeconds());
    			UR_Indhold = showFilled(UR_Nu.getHours()) + ":" + showFilled(UR_Nu.getMinutes());
    			document.getElementById("ur").innerHTML = UR_Indhold;
    			setTimeout("UR_Start()",1000);
    		}
    		function showFilled(Value) 
    		{
    			return (Value > 9) ? "" + Value : "0" + Value;
    		}
    En remplacant Date() par quelque chose comme Date(maintenant + decalage)
    J'ai fait plusieurs essais en mettant une variable en paramètre de la fonction date, mais je n'y arrive pas.
    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    en t'inspirant de la FAQ :
    http://javascript.developpez.com/faq...e=date#Horloge

    tu peux réaliser ce code :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function horloge(decalageH)
    {
    	var tt = new Date(); 
    	var strClock;
     
    	strClock = parseInt(tt.getHours() + decalageH)+":"+tt.getMinutes()+":"+tt.getSeconds();
     
     
    	document.getElementById("timer").innerHTML = strClock;
    	setTimeout(horloge, 1000); // mise à jour du contenu "timer" toutes les secondes
    }

    la fonction prenant en paramètre le décalage horaire.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Bonjour,

    Cette fonction devrait prendre en compte les timezones contenant des minutes car bien que peu nombreux il en existe ...
    Exemples : Inde +5:30, Nepal +5:45, Myanmar (Birmanie) +6:30, les îles Chatham (Nouvelle-Zélande) +12:45

    Il vaudrait également mieux utiliser les méthodes getUTCHours() ... si le décalage passé en paramètre correspond au timezone et pas au décalage par rapport au décalage local.


    Ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function horloge(decalageHHMM)
    {
    	var tt = new Date(); 
            var decalageHr = decalageHHMM / 60;
            var decalageMn = decalageHHMM % 60;
    	var strClock;
     
    	strClock = parseInt(tt.getUTCHours() + decalageHr)+":"+parseInt(tt.getUTCMinutes() + decalageMn)+":"+tt.getUTCSeconds();
     
     
    	document.getElementById("timer").innerHTML = strClock;
    	setTimeout(horloge, 1000); // mise à jour du contenu "timer" toutes les secondes
    }

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    J'ai modifié la fonction d'une part pour gérer les heures > 24, d'autres part, parce que le paramètre transmis est en secondes. Le setTimeout crée un problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    		function horloge(decalageHHMMSS)
    		{
    			var tt = new Date(); 
    			//var decalageHr = decalageHHMMSS / 60;
    			var decalageHr = decalageHHMMSS / 3600;
    			var decalageMn = decalageHHMMSS % 60;
    			var HrLocale = parseInt(tt.getUTCHours() + decalageHr);
    			var strClock;
     
    			if (HrLocale > 24)
    			{
    				HrLocale -= 24;
    			}
     
    			//strClock = parseInt(tt.getUTCHours() + decalageHr)+":"+parseInt(tt.getUTCMinutes() + decalageMn);//+":"+tt.getUTCSeconds();
    			strClock = parseInt(HrLocale)+":"+parseInt(tt.getUTCMinutes() + decalageMn);//+":"+tt.getUTCSeconds();
     
    			document.getElementById("timer").innerHTML = strClock;
    			//document.getElementById("timer").innerHTML = HrLocale; // Pour essais seulement
    			setTimeout(horloge, 1000); // mise à jour du contenu "timer" toutes les secondes
    		}
    Lors du rafraîchissement par le setTimeout, l'heure affichée devient : NaN:NaN. A quoi cela correspond?

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonsoir,

    Citation Envoyé par devyan
    Cette fonction devrait prendre en compte les timezones contenant des minutes car bien que peu nombreux il en existe ...
    Exemples : Inde +5:30, Nepal +5:45, Myanmar (Birmanie) +6:30, les îles Chatham (Nouvelle-Zélande) +12:45
    je les avais complètement oubliés, effectivement.


    Citation Envoyé par smccbbm Voir le message
    J'ai modifié la fonction d'une part pour gérer les heures > 24
    Tu n'auras jamais un décalage de plus de 24h à moins d'avoir inventé la machine à se déplacer dans le temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strClock = parseInt(HrLocale)+":"+parseInt(tt.getUTCMinutes() + decalageMn);//+":"+tt.getUTCSeconds();
    une remarque sur ce bout de code, la fonction parseInt() est inutile car ce sont déjà des entiers. Et tu peux concaténer des nombres et des chaines sans problème.

    Citation Envoyé par smccbbm Voir le message
    Lors du rafraîchissement par le setTimeout, l'heure affichée devient : NaN:NaN. A quoi cela correspond?
    normal, ta fonction horloge() attends un paramètre que tu ne lui transmets pas lors du setTimeout().
    https://developer.mozilla.org/en-US/...dow.setTimeout

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Tu n'auras jamais un décalage de plus de 24h à moins d'avoir inventé la machine à se déplacer dans le temps
    Ce n'est pas le décalage qui dépasse les 24 heures, c'est l'heure affichée, c'est à dire l'heure GMT + le décalage. Je maintiens donc ma modification.

    une remarque sur ce bout de code, la fonction parseInt() est inutile car ce sont déjà des entiers. Et tu peux concaténer des nombres et des chaines sans problème.
    OK merci

    normal, ta fonction horloge() attends un paramètre que tu ne lui transmets pas lors du setTimeout().
    J'avais essayé mais je faisais une erreur de syntaxe.

    Merci, ça fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher l'heure dans une jsp
    Par Manitobaa dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2009, 12h44
  2. Réponses: 2
    Dernier message: 26/10/2008, 07h34
  3. Réponses: 5
    Dernier message: 25/04/2008, 19h15
  4. Réponses: 1
    Dernier message: 05/09/2007, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo