Comment additionner des heures avec un cumul supérieur à 24H

Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008 - 16 sept. 2008 à 11:40
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008 - 22 sept. 2008 à 11:06
Bonjour,

je vous explique mon problème, j'ai un tableau ou je renseigne des heures lorsque le cumul est inférieur à 24H, sa fonctionne parfaitement, mais lorsque le cumul est supérieur à 24H il me soustrait 24H au résultat. Est ce que quelqu'un aurais une astuce pour résoudre ce problème svp??

Merci d'avance

Beberto56

20 réponses

Utilisateur anonyme
17 sept. 2008 à 03:06
Bonjour,

Un petit bout de code serait le bienvenu !

Cordialement.

...\ Dan /...
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
17 sept. 2008 à 09:05
Re Dan,

voila le bout de code concerné:

int ligne,i;
modele = (DefaultTableModel)table.getModel();
ligne=table.getRowCount();
java.util.Date c1 null, c2 null, c3 = null, c4 = null, c5 = null, c6 = null, c7 = null, c8 = null;
SimpleDateFormat hourParser=hourParser = new SimpleDateFormat("HH:mm");
for(i=0;i<ligne;i++)
{
try {
//assignation des valeurs aux variable c1 à c7
c1 = hourParser.parse( modele.getValueAt( i,1).toString());
c2 = hourParser.parse( modele.getValueAt( i,2).toString());
c3 = hourParser.parse( modele.getValueAt( i,3).toString());
c4 = hourParser.parse( modele.getValueAt( i,4).toString());
c5 = hourParser.parse( modele.getValueAt( i,5).toString());
c6 = hourParser.parse( modele.getValueAt( i,6).toString());
c7 = hourParser.parse( modele.getValueAt( i,7).toString());

//somme de l'ensemble des heures assignées à un format util
c8= new Date((((((c1.getTime()+ c2.getTime()+3600000)
+ c3.getTime()+3600000)+ c4.getTime()+3600000)
+ c5.getTime()+3600000)+ c6.getTime()+3600000)
+ c7.getTime()+3600000);

//récupération du résultat dans la cellule résultat
table.setValueAt(hourParser.format(c8), i, 8);
modele.fireTableDataChanged();
}
catch (ParseException ex)
{
Logger.getLogger(EssaiTableau.class.getName()).log(Level.SEVERE, null, ex);
}
}

Dans ce code je récupère les heures entrées dans les colonne 2 à 8, je les additionnent et je les met dans la colonne 9. Tout fonctionne très bien mais lorsque j'obtient un total de 24H ou plus il me soustrait ces 24H au résultat.

Par exemple, si j'additionne 7H + 7H + 7H + 7H je devrais obtenir 28H et j'obtient 4H en résultat.

Beberto56^^
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
17 sept. 2008 à 09:05
Re Dan,

voila le bout de code concerné:

int ligne,i;
modele = (DefaultTableModel)table.getModel();
ligne=table.getRowCount();
java.util.Date c1 null, c2 null, c3 = null, c4 = null, c5 = null, c6 = null, c7 = null, c8 = null;
SimpleDateFormat hourParser=hourParser = new SimpleDateFormat("HH:mm");
for(i=0;i<ligne;i++)
{
try {
//assignation des valeurs aux variable c1 à c7
c1 = hourParser.parse( modele.getValueAt( i,1).toString());
c2 = hourParser.parse( modele.getValueAt( i,2).toString());
c3 = hourParser.parse( modele.getValueAt( i,3).toString());
c4 = hourParser.parse( modele.getValueAt( i,4).toString());
c5 = hourParser.parse( modele.getValueAt( i,5).toString());
c6 = hourParser.parse( modele.getValueAt( i,6).toString());
c7 = hourParser.parse( modele.getValueAt( i,7).toString());

//somme de l'ensemble des heures assignées à un format util
c8= new Date((((((c1.getTime()+ c2.getTime()+3600000)
+ c3.getTime()+3600000)+ c4.getTime()+3600000)
+ c5.getTime()+3600000)+ c6.getTime()+3600000)
+ c7.getTime()+3600000);

//récupération du résultat dans la cellule résultat
table.setValueAt(hourParser.format(c8), i, 8);
modele.fireTableDataChanged();
}
catch (ParseException ex)
{
Logger.getLogger(EssaiTableau.class.getName()).log(Level.SEVERE, null, ex);
}
}

Dans ce code je récupère les heures entrées dans les colonne 2 à 8, je les additionnent et je les met dans la colonne 9. Tout fonctionne très bien mais lorsque j'obtient un total de 24H ou plus il me soustrait ces 24H au résultat.

Par exemple, si j'additionne 7H + 7H + 7H + 7H je devrais obtenir 28H et j'obtient 4H en résultat.

Beberto56^^
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
17 sept. 2008 à 09:05
Re Dan,

voila le bout de code concerné:

int ligne,i;
modele = (DefaultTableModel)table.getModel();
ligne=table.getRowCount();
java.util.Date c1 null, c2 null, c3 = null, c4 = null, c5 = null, c6 = null, c7 = null, c8 = null;
SimpleDateFormat hourParser=hourParser = new SimpleDateFormat("HH:mm");
for(i=0;i<ligne;i++)
{
try {
//assignation des valeurs aux variable c1 à c7
c1 = hourParser.parse( modele.getValueAt( i,1).toString());
c2 = hourParser.parse( modele.getValueAt( i,2).toString());
c3 = hourParser.parse( modele.getValueAt( i,3).toString());
c4 = hourParser.parse( modele.getValueAt( i,4).toString());
c5 = hourParser.parse( modele.getValueAt( i,5).toString());
c6 = hourParser.parse( modele.getValueAt( i,6).toString());
c7 = hourParser.parse( modele.getValueAt( i,7).toString());

//somme de l'ensemble des heures assignées à un format util
c8= new Date((((((c1.getTime()+ c2.getTime()+3600000)
+ c3.getTime()+3600000)+ c4.getTime()+3600000)
+ c5.getTime()+3600000)+ c6.getTime()+3600000)
+ c7.getTime()+3600000);

//récupération du résultat dans la cellule résultat
table.setValueAt(hourParser.format(c8), i, 8);
modele.fireTableDataChanged();
}
catch (ParseException ex)
{
Logger.getLogger(EssaiTableau.class.getName()).log(Level.SEVERE, null, ex);
}
}

Dans ce code je récupère les heures entrées dans les colonne 2 à 8, je les additionnent et je les met dans la colonne 9. Tout fonctionne très bien mais lorsque j'obtient un total de 24H ou plus il me soustrait ces 24H au résultat.

Par exemple, si j'additionne 7H + 7H + 7H + 7H je devrais obtenir 28H et j'obtient 4H en résultat.

Beberto56^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
17 sept. 2008 à 09:07
Re Dan,

voila le bout de code concerné:

int ligne,i;
modele = (DefaultTableModel)table.getModel();
ligne=table.getRowCount();
java.util.Date c1 null, c2 null, c3 = null, c4 = null, c5 = null, c6 = null, c7 = null, c8 = null;
SimpleDateFormat hourParser=hourParser = new SimpleDateFormat("HH:mm");
for(i=0;i<ligne;i++)
{
try {
//assignation des valeurs aux variable c1 à c7
c1 = hourParser.parse( modele.getValueAt( i,1).toString());
c2 = hourParser.parse( modele.getValueAt( i,2).toString());
c3 = hourParser.parse( modele.getValueAt( i,3).toString());
c4 = hourParser.parse( modele.getValueAt( i,4).toString());
c5 = hourParser.parse( modele.getValueAt( i,5).toString());
c6 = hourParser.parse( modele.getValueAt( i,6).toString());
c7 = hourParser.parse( modele.getValueAt( i,7).toString());

//somme de l'ensemble des heures assignées à un format util
c8= new Date((((((c1.getTime()+ c2.getTime()+3600000)
+ c3.getTime()+3600000)+ c4.getTime()+3600000)
+ c5.getTime()+3600000)+ c6.getTime()+3600000)
+ c7.getTime()+3600000);

//récupération du résultat dans la cellule résultat
table.setValueAt(hourParser.format(c8), i, 8);
modele.fireTableDataChanged();
}
catch (ParseException ex)
{
Logger.getLogger(EssaiTableau.class.getName()).log(Level.SEVERE, null, ex);
}
}

Dans ce code je récupère les heures entrées dans les colonne 2 à 8, je les additionnent et je les met dans la colonne 9. Tout fonctionne très bien mais lorsque j'obtient un total de 24H ou plus il me soustrait ces 24H au résultat.

Par exemple, si j'additionne 7H + 7H + 7H + 7H je devrais obtenir 28H et j'obtient 4H en résultat.

Beberto56^^
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
17 sept. 2008 à 09:07
Re Dan,

voila le bout de code concerné:

int ligne,i;
modele = (DefaultTableModel)table.getModel();
ligne=table.getRowCount();
java.util.Date c1 null, c2 null, c3 = null, c4 = null, c5 = null, c6 = null, c7 = null, c8 = null;
SimpleDateFormat hourParser=hourParser = new SimpleDateFormat("HH:mm");
for(i=0;i<ligne;i++)
{
try {
//assignation des valeurs aux variable c1 à c7
c1 = hourParser.parse( modele.getValueAt( i,1).toString());
c2 = hourParser.parse( modele.getValueAt( i,2).toString());
c3 = hourParser.parse( modele.getValueAt( i,3).toString());
c4 = hourParser.parse( modele.getValueAt( i,4).toString());
c5 = hourParser.parse( modele.getValueAt( i,5).toString());
c6 = hourParser.parse( modele.getValueAt( i,6).toString());
c7 = hourParser.parse( modele.getValueAt( i,7).toString());

//somme de l'ensemble des heures assignées à un format util
c8= new Date((((((c1.getTime()+ c2.getTime()+3600000)
+ c3.getTime()+3600000)+ c4.getTime()+3600000)
+ c5.getTime()+3600000)+ c6.getTime()+3600000)
+ c7.getTime()+3600000);

//récupération du résultat dans la cellule résultat
table.setValueAt(hourParser.format(c8), i, 8);
modele.fireTableDataChanged();
}
catch (ParseException ex)
{
Logger.getLogger(EssaiTableau.class.getName()).log(Level.SEVERE, null, ex);
}
}

Dans ce code je récupère les heures entrées dans les colonne 2 à 8, je les additionnent et je les met dans la colonne 9. Tout fonctionne très bien mais lorsque j'obtient un total de 24H ou plus il me soustrait ces 24H au résultat.

Par exemple, si j'additionne 7H + 7H + 7H + 7H je devrais obtenir 28H et j'obtient 4H en résultat.

Beberto56^^
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
17 sept. 2008 à 09:58
Re Dan,

voila le bout de code concerné:

int ligne,i;
modele = (DefaultTableModel)table.getModel();
ligne=table.getRowCount();
java.util.Date c1 null, c2 null, c3 = null, c4 = null, c5 = null, c6 = null, c7 = null, c8 = null;
SimpleDateFormat hourParser=hourParser = new SimpleDateFormat("HH:mm");
for(i=0;i<ligne;i++)
{
try {
//assignation des valeurs aux variable c1 à c7
c1 = hourParser.parse( modele.getValueAt( i,1).toString());
c2 = hourParser.parse( modele.getValueAt( i,2).toString());
c3 = hourParser.parse( modele.getValueAt( i,3).toString());
c4 = hourParser.parse( modele.getValueAt( i,4).toString());
c5 = hourParser.parse( modele.getValueAt( i,5).toString());
c6 = hourParser.parse( modele.getValueAt( i,6).toString());
c7 = hourParser.parse( modele.getValueAt( i,7).toString());

//somme de l'ensemble des heures assignées à un format util
c8= new Date((((((c1.getTime()+ c2.getTime()+3600000)
+ c3.getTime()+3600000)+ c4.getTime()+3600000)
+ c5.getTime()+3600000)+ c6.getTime()+3600000)
+ c7.getTime()+3600000);

//récupération du résultat dans la cellule résultat
table.setValueAt(hourParser.format(c8), i, 8);
modele.fireTableDataChanged();
}
catch (ParseException ex)
{
Logger.getLogger(EssaiTableau.class.getName()).log(Level.SEVERE, null, ex);
}
}

Dans ce code je récupère les heures entrées dans les colonne 2 à 8, je les additionnent et je les met dans la colonne 9. Tout fonctionne très bien mais lorsque j'obtient un total de 24H ou plus il me soustrait ces 24H au résultat.

Par exemple, si j'additionne 7H + 7H + 7H + 7H je devrais obtenir 28H et j'obtient 4H en résultat.

Beberto56^^
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
17 sept. 2008 à 09:59
Excuse, j'ai eu un gros beug c'est pour cela que ya autant de message lol^^

Beberto56
0
Utilisateur anonyme
17 sept. 2008 à 17:55
Bonjour,

Je me suis absenté...

Peux-tu me dire ce que tu as exactement dans les cellules de ta table ?

Des heures, mais sous quelle forme  :  ex 7:00,  7.00, 7,00 ou autre ?

...\ Dan /...
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
18 sept. 2008 à 08:56
Re,

ben pour l'instant je peux rentrer des heures aux formats HH:mm et H:mm sous un vrai format heure . Je me sert d'un SimpleFormatDate.

Beberto56
0
Utilisateur anonyme
18 sept. 2008 à 11:49
Re , Re, Re, ....


Ce format t'est imposé ou tu dois cumuler les heures, minutes entrées dans une tables?

De toutes manières, en simulant, car je n'ai pas la table, voilà ce qu'on obtient:


Ï     c1 = Thu Jan 01 07:00:00 CST 1970

ÏϧÏc2 = Thu Jan 01 07:00:00 CST 1970

ÏϧÏc3 = Thu Jan 01 07:00:00 CST 1970

ÏϧÏc4 = Thu Jan 01 07:00:00 CST 1970

ÏϧÏc5 = Thu Jan 01 00:00:00 CST 1970

ÏϧÏc6 = Thu Jan 01 00:00:00 CST 1970

ÏϧÏc7 = Thu Jan 01 00:00:00 CST 1970

ÏϧÏc1.getTime() = 46800000

ÏϧÏc2.getTime()+3600000) = 50400000

ÏϧÏc3.getTime()+3600000) = 50400000

ÏϧÏc4.getTime()+3600000) = 50400000

ÏϧÏc5.getTime()+3600000) = 25200000

ÏϧÏc6.getTime()+3600000) = 25200000

ÏϧÏc7.getTime()+3600000) = 25200000

ÏϧÏc8 = Sat Jan 03 22:00:00 CST 1970

Je ne pense pas que c'est ce que tu veux.

En fait, on cumule bien des heures minutes, non pour obtenir un total mais pour faire évoluer la date c8.

Au fait, pouquoi ajoutes-tu 3600000 ms (ce qui représente 1 heure ) a c2, c3, c4, c5, c6, c7 ?

On en reparle...



...\ Dan /...
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
18 sept. 2008 à 11:52
re,

parceque le calendrier commence à 1H donc je rajoute pour que cela fonctionne j'ai trouver cela sur le net et sa fonctionne nikel mais quand mon total dépasse les 24H, il repasse à zero c'est cela le problème
0
Utilisateur anonyme
18 sept. 2008 à 11:57
C'est parceque tu n'obtiens pas un total d'heures mais l'heure du jour (qui ne comprend que 24 heures...






...\ Dan /...
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
18 sept. 2008 à 15:48
re,
et donc tu pense que je dois faire comment??

Beberto56^^
0
Utilisateur anonyme
18 sept. 2008 à 23:09
Bonjour,

Je te prepare quelque chose que je teste avant.

A+



...\ Dan /...
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
19 sept. 2008 à 09:15
re,

oki j'attend ton retour et merci beaucoup en tous cas

beberto56^^
0
Utilisateur anonyme
19 sept. 2008 à 09:22
Bonjour,







22



ÏϧÏϧ




//Tu laisses ta table comme elle est (hh:mm) .




23


ÏϧÏϧ






24




ÏϧÏϧ



//...........




25


ÏϧÏϧ




//............




26


ÏϧÏÏš¹íÏ

String c =

""



;



27


ÏϧÏÏš¹íÏ

String c8 =

""



;



28


ÏϧÏÏš¹íÏ

String hS =

""

;



// heures (String)




29


ÏϧÏÏš¹íÏ

String mS =

""

;



// minutes (String)




30


ÏϧÏÏš





31



ÏϧÏÏš¹íÏ


int



indice = 0;



32


ÏϧÏÏš¹íÏ


int

hI = 0;



// heures (int)




33


ÏϧÏÏš¹íÏ


int

mI = 0;



// minutes (int)




34


ÏϧÏÏš¹íÏ


int

toth = 0;



// total des heures




35


ÏϧÏÏš¹íÏ


int

totm = 0;



// total des minutes




36


ÏϧÏÏš¹íÏ


int

minenh = 0;



// pour la conversion minutes en heures




37


ÏϧÏÏš¹íÏ


int

reste = 0;



// reste de la division totm/60




38


ÏϧÏϧ









39


ÏϧÏÏš¹¹±


for



(i=0;il<ligne;i++)



40


ÏϧÏϧÏÏ5



{



41


ÏϧÏϧÏÏ7¹¹Ï

c = modele.getValueAt(i,num_col);



// exemple 7:0




42


ÏϧÏϧÏÏ5






43





ÏϧÏϧÏÏ7¹¹Ï


indice = c.indexOf(

":"

);



// position de ":" (dans notre cas ind = 1)




44


ÏϧÏϧÏÏ7¹¹Ï



hS = c.substring(0,indice);



45


ÏϧÏϧÏÏ7¹¹Ï



hI = Integer.parseInt(hS);



46


ÏϧÏϧÏÏ7¹¹Ï



mS = c.substring(indice + 1);



47


ÏϧÏϧÏÏ7¹¹Ï



mI = Integer.parseInt(mS);



48


ÏϧÏϧÏÏ7¹¹Ï



toth = toth + hI;



49


ÏϧÏϧÏÏ7¹¹Ï



totm = totm + mI;



50


ÏϧÏϧÏÏ7¹¹Ï

minenh = totm / 60;



// conversion des min. en heures




51


ÏϧÏϧÏÏ7¹¹Ï

reste = totm%60;



// calcul du reste qui est la valeur des minutes




52


ÏϧÏϧÏÏ7¹¹Ï

toth = toth + minenh;



// total final des heures




53


ÏϧÏϧÏÏ7¹¹Ï

totm = reste;



// total final des minutes




54


ÏϧÏϧÏÏ°



}



55


ÏϧÏϧ









56


ÏϧÏÏš¹íÏ

String tothS = Integer.toString(toth);



// conversion toth (int)/String




57


ÏϧÏÏš¹íÏ

String totmS = Integer.toString(totm);



// conversion totm (int)/String




58


ÏϧÏÏš¹¹Ï

c8 = tothS;



// par exemple 35




59


ÏϧÏÏš¹¹Ï

c8 = c8.concat(

":"

);



// 35:




60


ÏϧÏÏš¹¹Ï

c8 = c8.concat(totmS);



// 35:52




61


ÏϧÏÏš¹¹Ï

System.out.println(

"c8 = "



+ c8);



62


ÏϧÏϧ









63


ÏϧÏϧ




// encoyer le résultat dans la table




64




ÏϧÏÏ






Il serait bon de verifier que le minutes (si ce n'est pas fait lors de la saisie) mI ne sont pas > 59

 Codialement.



...\ Dan /...
0
Utilisateur anonyme
19 sept. 2008 à 09:47
Attention la ligne 41 (i,num_col) est à modifier >>> num_col
J'ai supposé que c1 à c8 étaient sur une colonne de 0 à 7. Si cette colonne est en 0 num_col = 0  soit (i,0)
Si par exemple elles sont (les cel.) en horizontal sur la ligne 0 (0,i)

J'ai copié depuis mom programme ce que génère mon editeur et c'est mal sorti.
Si ca te pose problème je reposte. 

...\ Dan /...
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
22 sept. 2008 à 11:06
Salut Dan,

je tient tous simplement à te dire CHAPEAU L'ARTISTE.
J'ai adapté ton code au mien et cela marche parfaitement. C'est nikel. J'ai fait juste quelque modif et j'ai testé les minutes c'est nikel.
Un grand merci et a plus tard. Tchao

beberto56.
0
Beberto56 Messages postés 119 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 22 décembre 2008
22 sept. 2008 à 11:06
Salut Dan,

je tient tous simplement à te dire CHAPEAU L'ARTISTE.
J'ai adapté ton code au mien et cela marche parfaitement. C'est nikel. J'ai fait juste quelque modif et j'ai testé les minutes c'est nikel.
Un grand merci et a plus tard. Tchao

beberto56.
0
Rejoignez-nous