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

Langage Java Discussion :

Chrono avec Gregorian calendar


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut Chrono avec Gregorian calendar
    Bonjour à tous

    J'aimerais créer un chronomètre précis. Dans mon applet j'ai déjà un thread qui se remet 40 fois par seconde. Donc j'ai envisagé deux solutions

    -soit créer dans le thread ou en dehors un deuxième thread qui va à une vitesse OK pour le chronomètre (par ex 100);à ce moment là il suffit de prendre une variable t+=1 et mettre tout ça dans un label. (mais comment créer ce thread avec une autre vitesse...??)

    -soit, dans le init de mon applet prendre le nbr de millisecondes depuis 1970 avec le GregorianCalendar.getTimeInMillis();Ensuite dans mon thread actuel, recalculer ce nbr de millis et faire un test si la différence de ces deux nbr est plus petite que 100 je fais augmenter t+=1...; le problème avec cette méthode est que les deux nbr de millis secondes depuis 1970 sont égaux !!??

    Sinon une autre méthode simple à proposer ?
    NB: oublier pas que je suis pas encore vraiment calé en java !

    Merci,
    Cordialement
    Pat-trix

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Citation Envoyé par pat-trix
    -soit, dans le init de mon applet prendre le nbr de millisecondes depuis 1970 avec le GregorianCalendar.getTimeInMillis();
    http://java.sun.com/j2se/1.4.2/docs/...entTimeMillis()

    Citation Envoyé par pat-trix
    le problème avec cette méthode est que les deux nbr de millis secondes depuis 1970 sont égaux !!??
    Lapalissade.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    merci pour le currentTimeMillis, la différence marche. Mais le chrono va toujours un epu trop lentement: voici le code se trouvant dans mon thread:
    (lastmillis est le nbmillis depuis 1970 dans init)

    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
     
    //Méthode qui gère le chrono
                    crtmillis=System.currentTimeMillis();
                    if(chrono){
                        //System.out.println(crtmillis-lastmillis);
                        if(crtmillis-lastmillis>100){
                            dixiemeseconde+=1;
                            lastmillis=crtmillis;
                            lbchrono.setText(dixiemeseconde / 36000
                                 + ":" + (dixiemeseconde / 6000) % 6 +      (dixiemeseconde / 600) % 10
                                 + ":" + (dixiemeseconde / 100) % 6  + (dixiemeseconde / 10) % 10
                                 + ":" + dixiemeseconde % 10);
     
     
                                   }
                             }
    Qu'est ce qui fait qu'il va trop lentement ?
    Merci

    Pat-trix

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    Utilise un StringBuffer au lieu de concaténer tes String, simplifie ton code et tu gagneras un bon 30%

    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
     
          StringBuffer sb = new StringBuffer();
          long lastmillis=System.currentTimeMillis();
          long crtmillis;
     
          while (true) {
             crtmillis=System.currentTimeMillis() - lastmillis;
             System.out.println(sb.append(crtmillis / 3600000)
                                   .append(":")
                                   .append((crtmillis / 600000) % 6).append((crtmillis / 60000) % 10)
                                   .append(":")
                                   .append((crtmillis / 10000) % 6).append((crtmillis / 1000) % 10)
                                   .append(":")
                                   .append(crtmillis / 100 % 10)
                                   .toString());
             sb.setLength(0);
          }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Merci, en effet ça marche now !

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

Discussions similaires

  1. Date fausse avec Gregorian Calendar
    Par Lolitaaa dans le forum Général Java
    Réponses: 5
    Dernier message: 21/06/2010, 13h25
  2. Gregorian Calendar - 29 Février
    Par [ced] dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 21/07/2008, 09h51
  3. problème avec mon Calendar
    Par skorpio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2007, 11h27
  4. problème avec le calendar
    Par sky_perrinos dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2007, 17h45
  5. Réponses: 3
    Dernier message: 12/07/2006, 09h13

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