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 :

Additioner deux heures HH:MM


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Points : 46
    Points
    46
    Par défaut Additioner deux heures HH:MM
    Bonjour à tous,

    Je suis en train de faire une petite méthode pour additionner 2 heures au format HH:MM. Pour le moment, je bloque un peu, l'addition j'ai réussion mais je me retrouve avec des:
    03:30 + 04:40 = 07:70, pas terrible tout ça

    Voici comment, je fais l'addition pour le moment:
    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
     public static String additionHeure(String heure_1, String heure_2)
     {
      //Séparation des heures et des minutes
      String[] tab_1 = heure_1.split(":");
      String[] tab_2 = heure_2.split(":");
     
      //Cast les heures en int
      int h_1 = Integer.parseInt(tab_1[0]);
      int h_2 = Integer.parseInt(tab_2[0]);
      //Cast les minutes en int  
      int min_1 = Integer.parseInt(tab_1[1]);
      int min_2 = Integer.parseInt(tab_2[1]);
      //Addition des heures et des minutes
      int h_total = h_1+h_2;
      int min_total = min_1+min_2;
     
      return h_total+":"+min_total;
    }

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Il te suffit de traiter le cas où les minutes dépassent 60 pour ajouter une heure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          while (min_total > 60) {
              min_total -= 60;
              h_total += 1;
          }
    Sinon je pense que tu devrais te créer une classe Heure plutôt que d'utiliser des String... Cela te simplifierai le travail...

    a++

  3. #3
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static String additionHeure(String heure1, String heure2) {
            String addition = null;
            DateFormat format = new SimpleDateFormat("HH:mm");
            try {
                Date date1 = format.parse(heure1);
                Date date2 = format.parse(heure2);
                Date resultat = new Date(date1.getTime() + date2.getTime());
                addition = format.format(resultat);
            } catch (ParseException erreur) {
                erreur.printStackTrace();
            }
            return addition;
        }

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 139
    Points : 124
    Points
    124
    Par défaut
    Salut à vous,

    petite question car je crois avoir mal aux yeux, voici le source cité précédemment avec une petite modif, et un test d'exécution... cherchez l'erreur ....

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
            public static void main(String argv[]) 	
    	{
    	        String a,b ;
     
    		a="11:43:36:0009";
    		b="00:00:02:0000";
     
    		System.out.println("---------------\n  "+additionHeure(a,b));
    	}
     
    	public static String additionHeure(String heure1, String heure2) 
            {
                 String addition = null;
                 DateFormat format = new SimpleDateFormat("HH:mm:ss:SSSS");
                 try {
                     Date date1 = format.parse(heure1);
                     Date date2 = format.parse(heure2);
     
                     System.out.println("  "+format.format(date1));
                     System.out.println("+ "+format.format(date2));
     
                     Date resultat = new Date(date1.getTime() + date2.getTime());
                     addition = format.format(resultat);
     
                 } catch (ParseException erreur) {
     
                      erreur.printStackTrace();
                 }
                 return addition;
        }
    voici la trace d'exécution :

    11:43:36:0009
    + 00:00:02:0000
    -----------------
    10:43:38:0009

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Les Date ne sont pas des Heures !!! Et on ne peut donc pas les ajouter comme cela !!! Cela n'a aucun sens d'ajouter deux date différentes....

    Si tu affiches la Date complètes (et pas seulement l'heure), tu verrais que tu fais le calcul suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Thu Jan 01 11:43:36 GMT+01:00 1970
    + Thu Jan 01 00:00:02 GMT+01:00 1970
    Tu additionnes le 1 janvier 1970 à 11h43 avec le 1er janvier 1970 à 00:00 : cela ne veut strictement rien dire.

    De plus comme on est en GMT+1 la date GMT est le 31 décembre 1969 à 11h00, qui est codé par un nombre négatif... C'est donc normal que la nouvelle valeur soit plus petite...


    Les Dates ne peuvent pas être additionné de cette manière !!!


    Si tu veux addtionner des durée tu dois te faire une classe pour cela, et pas utiliser des Dates !!!

    a++

  6. #6
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Moi je dirais une class HourMinuteSecond comme ceci:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class HourMinuteSecond {
     
        private static final NumberFormat formatter = new DecimalFormat("00");
     
        private int seconds;
     
        public HourMinuteSecond(int hh, int mm, int ss) {
            seconds = (hh * 60 + mm) * 60 + ss;
        }
     
        public HourMinuteSecond add(HourMinuteSecond other) {
            seconds += other.seconds;
        }
     
        public int getH() {
            return seconds / 3600;
        }
     
        public int getM() {
            return (seconds / 60) % 60;
        }
     
        public int getS() {
            return seconds % 60;
        }
     
        public String toString() {
            return formatter.format(getH()) + ":" + formatter.format(getM()) + ":" + formatter.format(getS());
        }
     
    }

  7. #7
    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 adiGuba
    De plus comme on est en GMT+1 la date GMT est le 31 décembre 1969 à 11h00, qui est codé par un nombre négatif... C'est donc normal que la nouvelle valeur soit plus petite...
    Les Dates ne peuvent pas être additionné de cette manière !!!
    mea maxima culpa

    Vive le modulo 60 !

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

Discussions similaires

  1. Comment afficher un formulaire toutes les deux heures?
    Par casho dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/09/2006, 17h43
  2. problème différence entre deux heures
    Par gwenhael dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2006, 16h16
  3. Réponses: 7
    Dernier message: 05/07/2006, 17h29
  4. ajout de deux heures dans une date
    Par chris401 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 09h04
  5. [Dates] Calcul d'une différence entre deux heures
    Par loreleï85 dans le forum Langage
    Réponses: 12
    Dernier message: 28/06/2006, 12h43

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