Conversion d'un Long en "Time" (Java)

Mardraum Messages postés 9 Statut Membre -  
 Utilisateur anonyme -
Bonjour a tous,

Je ne sais pas si le titre est exlpicite...
En fait j'ai fait des calculs avec des Long pour avoir des valeurs en millisecondes...
J'aurais besoin de repasser ces Long en valeur au format HH:MM:SS...
Je ne trouve pas si cela est possible avec Java ?!
Pourriez vous m'aider ?!

J'ai pour le moment fait cette petite "methode":

long test92 = moyenneI1S1 / 3600000;
double heures = Math.floor(test92);
// reste en ms
long test9 = moyenneI1S1 % 3600000;
// temps en minutes
long test10 = test9 / 60000;
double minutes = Math.floor(test10);
// reste en ms
long test93 = test9 % 60000;
long test11 = test93 % 1000;
double secondes = Math.floor(test11);


Mais cela ne me permet que d'avoir d'un coté les heures, d'un autre les minutes et encore d'un autre les secondes, mais moi j'aimerais evidemment les avoir dans la meme variable... car je dois afficher cette variable dans un graphique.

Est-ce possible ?!
Merci d'avance de m'aider
Mardraum

A voir également:

3 réponses

Utilisateur anonyme
 
Salut,

J'ai quelque chose, ce n'est pas jojo mais bon on peut améliorer...

Je "fabrique" d'abord mes millisecondes:

int hh = 10;
         int min = 20;
         int sec = 32;
         int ms = 12;
      	
         int milli_hh = hh * 60 * 60 * 1000;
         int milli_min = min * 60 * 1000;
         int milli_sec = sec * 1000;
         int milli_mil = ms;
      
         long tot_milli = milli_hh + milli_min + milli_sec + milli_mil;
      
         System.out.println("Soit un total de: " + tot_milli + " millisecondes");


Puis je converti:

System.out.println("\nConversion en hh:mn:sec:ms:");
      
      	// conversion en hh:mn:sec:ms
      
         long nb_hh = tot_milli / (60 * 60 * 1000);
         System.out.println("Heures: " + nb_hh);
      
         long reste_milli = tot_milli - (nb_hh * 60 * 60 * 1000);
         long nb_min = reste_milli / (60 * 1000);
         System.out.println("Minutes: " + nb_min);
      
         reste_milli = reste_milli - (nb_min * 60 * 1000);
         long nb_sec = reste_milli / 1000;
         System.out.println("Secondes: " + nb_sec);
         
         reste_milli = reste_milli - (nb_sec * 1000);
         long nb_mil = reste_milli;
         System.out.println("Millisecondes: " + nb_mil);
         
         System.out.println("Soit:\n" + nb_hh + ":" + nb_min + ":" + nb_sec + ":" + nb_mil);


Cordialement,

Dan
0
choubaka Messages postés 5526 Date d'inscription   Statut Modérateur Dernière intervention   2 106
 
Salut

tu a essayé avec la classe "Time" ???

http://download-llnw.oracle.com/javase/1.3/docs/api/java/sql/Time.html
0
Mardraum Messages postés 9 Statut Membre
 
Bonjour a tous

Désolé Danimo que tu ai passé du temps sur ce sujet, mais ce que tu as fait c'est déjà ce que j'avais fait de mon coté...
Donc j'ai moi aussi l'affichage syso avec les heures les minutes et secondes...

Le souci c'est que je suis censé ressortir ces millisecondes dans un graphique, donc il est préférable pour ce faire que les millisecondes soient convertient directement en temps mais en une seule variable ?!
Ce qui ne peut etre le cas si je découpe celles ci en heures puis en secondes etc...
De plus dans ma base de test les exemples se limitent a quelques heures, mais il faudrait dans l'idéal que l'on puisse monter jusqu'en journée...

Choubaka, je vais essayer de voir si je peux faire quelque chose avec la classe Time...

Si quelqu'un a d'autres idées ?!
;)
0
Utilisateur anonyme
 
Re,

"donc il est préférable pour ce faire que les millisecondes soient convertient directement en temps mais en une seule variable ?! "

Sous quelle forme tu voudrais obtenir cette variable unique ?
0
Mardraum Messages postés 9 Statut Membre
 
Re Bonjour a tous
Le souci est reglé car le client souhaite voir apparaitre les valeurs en minutes !!!
Donc une petite division par 60 000 suffit

Danimo,

Au depart je souhaitais faire que mes 15 880 000 millisecondes soit traduites directement en 4h24min40sec ...

Si tu as une methode rapide pour faire cette conversion en une seule valeur cela peut toujours servir, mais sinon pas la peine de te prendre la tete la dessus !!!
;)

Merci encore a toi et choubaka !!!
0
Utilisateur anonyme
 
Salut,

long tot_milli = 15880000;
         long nb_jours = tot_milli/(24*60*60*1000);
         long reste_milli = tot_milli-(nb_jours*24*60*60*1000);
         long nb_hh = reste_milli/(60*60*1000);
         reste_milli = reste_milli-(nb_hh*60*60*1000);
         long nb_min = reste_milli/(60*1000);
         reste_milli = reste_milli-(nb_min*60*1000);
         long nb_sec = reste_milli/1000;   
         reste_milli = reste_milli-(nb_sec*1000);
         long nb_mil = reste_milli;   
         String resultat = nb_jours + "j" + nb_hh + "h" + nb_min + "min" + nb_sec + "sec" + nb_mil + "ms";
         System.out.println("resultat:\n" + resultat);
         
        // pour ce que veut le client:
         tot_milli = 15880000;
         nb_min = tot_milli/(60*1000); // sans tenir compte des 40 secondes restantes
         System.out.println("\nresultat:\n" + nb_min + " minutes");


Cordialement,

Dan
0