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] Erreur récupération du nombre d'heures


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    février 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 473
    Points : 831
    Points
    831
    Par défaut [Date] Erreur récupération du nombre d'heures
    Bonjour à tous !

    Je demande à un utilisateur de me saisir un nombre de minutes. Ce nombre de minutes me servira plus tard à faire un compte à rebours Heures/Minutes/Secondes.

    Le plus approprié pour travailler avec les dates et autres données temporelles reste de convertir la durée en millisecondes, je multiplie donc le nombre de minutes par 60 * 1000.

    Y'a un foirage quelque part parce que pour 120 minutes, soit 7 200 000 millisecondes voici le résultat de trois fonctions différentes (je n'affiche que le nombre d'heure pour l'instant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Long maxPause = cp.getTempsPause();
    						Calendar cal = GregorianCalendar.getInstance();
    						cal.setTimeInMillis(maxPause);
    						System.out.println("Nombre d'heures : "+cal.get(Calendar.HOUR_OF_DAY));
    Affiche : 3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Long maxPause = cp.getTempsPause();
    private final java.text.SimpleDateFormat pauseTimerFormat = new java.text.SimpleDateFormat(" HH");
    System.out.println("Nombre d'heures : "+timerFormat.format(new Date(maxPause));
    Affiche : 3

    et enfin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Long maxPause = cp.getTempsPause();
    System.out.println("Nombre d'heures : "+TimeUnit.HOURS.convert(maxPause, TimeUnit.MILLISECONDS));
    Affiche : 2

    Il me semble que jusqu'à aujourd'hui 120 minutes font bien 2h et je me demande pourquoi je n'obtiens pas le résultat attendu avec les deux premières fonctions.
    C'est un peu embêtant parce que SimpleDateFormat est bien pratique pour convertir vers une String et que j'ai besoin d'afficher le temps restant. Il serait simple de coder quelque chose qui fonctionne mais je m'interroge quand même sur ce problème...

    Merci pour vos éclaircissements

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 765
    Points : 12 925
    Points
    12 925
    Par défaut
    Un indice:
    "Ville située dans la banlieue de Londres, servant de référence temporelle au niveau Mondial"
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    février 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 473
    Points : 831
    Points
    831
    Par défaut
    Citation Envoyé par sinok Voir le message
    Un indice:
    "Ville située dans la banlieue de Londres, servant de référence temporelle au niveau Mondial"
    Ouais, je vois où tu veux en venir.
    Mais que je sois à Greenwitch ou à Paris 120 minutes font bien deux heures ?
    A quel moment dans le processus de "conversion" il ajoute ou retranche une heure ?

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 765
    Points : 12 925
    Points
    12 925
    Par défaut
    Bah entre Greenwich et paris il y a une heure de différence.

    Donc à EPOCH + 7 200 000 ms à Greenwich il est bien deux heures, toutefois à Paris au même instant, il sera trois heures.

    Du fait des timezone, le Calendar n'est pas forcément la meilleure idée dans ce genre de cas. Ou alors il faut absolument préciser au Calendar que la Timezone est celle de Greenwich.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    février 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 473
    Points : 831
    Points
    831
    Par défaut
    Ok j'ai compris.
    J'étais parti dans l'idée que ça n'était que des durées mais au final ça reste des classes qui manipulent des dates.

    J'ai essayé de passer Locale.French et Locale.France à SimpleDateFormat, sans résultat.

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 765
    Points : 12 925
    Points
    12 925
    Par défaut
    C'est normal, ton SimpleDateFormat est par défaut spécifié& avec Locale.FRANCE vu que ton OS est configuré comme étant français.

    Le but ici serait plutôt de configurer ton SimpleDateFormat comme étant en Angleterre.

    Toutefois, dans ton cas je resterais plutôt sur TimeUnit ou des méthodes maison à base de bonne vieilles multiplications/divisions...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    février 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 473
    Points : 831
    Points
    831
    Par défaut
    Citation Envoyé par sinok Voir le message
    C'est normal, ton SimpleDateFormat est par défaut spécifié& avec Locale.FRANCE vu que ton OS est configuré comme étant français.

    Le but ici serait plutôt de configurer ton SimpleDateFormat comme étant en Angleterre.
    Oui bien sûr, c'est logique J'ai du mal aujourd'hui...

    Je vais attendre demain pour choisir une solution. Je marque le sujet en résolu, merci pour ton aide.

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

Discussions similaires

  1. [MySQL] Erreur récupération du nombre de ligne d'une table
    Par idate dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/02/2013, 00h35
  2. Nombre d'heures entre deux dates
    Par jaymz dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 21/01/2009, 17h22
  3. Nombre d'heures entre 2 dates
    Par jad dans le forum SQL
    Réponses: 2
    Dernier message: 05/12/2008, 13h41
  4. [Dates] Fonction calcule le nombre de demi-heures
    Par bigltnt dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2007, 16h31
  5. [Dates] Le nombres d'heures entre 2 dates
    Par Blackos77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2007, 16h57

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