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

Collection et Stream Java Discussion :

[Date] Affichage durée : 1h en trop ? Bizarre !


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut [Date] Affichage durée : 1h en trop ? Bizarre !
    Bonjour à tous,

    Dans un programme je dois afficher une durée. Cette durée est en seconde, et j'utilise un DateFormat pour l'afficher. Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int nbS = 150 ; // Durée de 150s
    DateFormat timeFormat = DateFormat.getTimeInstance( DateFormat.MEDIUM ) ; // Format style HH:MM:SS
    Date dureeDate = new Date( nbS*1000 ) ; // x1000 pour avoir des millisecondes
    System.out.println( timeFormat.format(dureeDate) ); // Affiche 01:02:30 au lieu de 00:02:30
    Le problème est dans les commentaires, je me retrouve avec 1h de + !
    D'où cela peut-il venir ? A ma connaissance, les heures commencent bien à 0 non ? Je précise que la Locale est Locale.FRANCE.

    Merci pour vos lumières !

  2. #2
    Membre émérite 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
    Par défaut
    C'est parce qu'actuellement (en France) on est en heure d'hiver, donc GMT+1 : utilise plutôt un Calendar quand tu veux "construire" une date/heure à partir d'une partie de ces composantes année-mois-jour/heure-minute-seconde.

  3. #3
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Citation Envoyé par g_rare
    C'est parce qu'actuellement (en France) on est en heure d'hiver, donc GMT+1 : utilise plutôt un Calendar quand tu veux "construire" une date/heure à partir d'une partie de ces composantes année-mois-jour/heure-minute-seconde.
    OK merci beaucoup, j'y aurai jamais pensé ! Ca ça marche très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int nbS = 150 ; // Durée de 150s
    int h = (nbS/3600) ;
    int m = ((nbS%3600)/60) ;
    int s = (((nbS%3600)%60)) ;
    DateFormat timeFormat = DateFormat.getTimeInstance( DateFormat.MEDIUM ) ; // Format style HH:MM:SS
    Calendar c = Calendar.getInstance() ;
    c.set(0,0,0,h,m,s) ;
    System.out.println( timeFormat.format(c.getTime()) );
    Question qui n'a pas vraiment de rapport : niveau performance, vaut il mieux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int h = (nbS/3600) ;
    int m = ((nbS%3600)/60) ;
    int s = (((nbS%3600)%60)) ;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int h = (nbS/3600) ;
    int nbH = h*3600 ;
    int m = ((nbS-nbH)/60) ;
    int s = (((nbS-nbH-m*60)%60)) ;
    Je dirais la 1ère possibilité, mais sait on jamais

  4. #4
    Membre émérite 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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int h = nbS / 3600;
    int s = nbS % 60;
    int m = nbS - (h * 3600) - s ;

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

Discussions similaires

  1. [Dates] Affichage d'une variable
    Par claudesou dans le forum Langage
    Réponses: 3
    Dernier message: 29/05/2006, 10h08
  2. [Dates] Affichage de l'heure
    Par HwRZxLc4 dans le forum Langage
    Réponses: 17
    Dernier message: 22/05/2006, 15h48
  3. [Dates] affichage différent selon le mois en cours
    Par itri2005 dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2006, 17h05
  4. Réponses: 7
    Dernier message: 05/04/2006, 11h22
  5. [Dates] affichage date
    Par stomerfull dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2006, 12h32

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