Travailler avec des jours/heures/minutes/secondes

Contenu du snippet

Bonjour,

Ayant fait quelques recherches sur les calculs de date et d'heure, je n'ai rien trouvé d'assez bien pour réaliser des calculs de temps.
Je désirais récupérer d'un fichier plat généré par mon GPS les relevées horaires d'un parcours.
Je voulais alors faire des calculs comme par exemple partir de 00:00:00 et avoir le nombre de jours si les 24h étaient dépassés. Ou encore retirer les temps où le déplacement est nul...
Voici donc mon résultat sous forme d'une classe (JourHeure).
Cela peut être amélioré pour son propre usage. Je suis ouvert et même demandeur de remarques (constructives).

Source / Exemple :

package technique;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**


* Classe permettant de travailler avec une chronologie basee sur le format jour/heure/minute/seconde

* @author franck
 *


*/
public class JourHeure extends Date {
 private static final long serialVersionUID = 4562804277680890199L;
 SimpleDateFormat formatHeure = new SimpleDateFormat("HH:mm:ss");
 SimpleDateFormat formatJour = new SimpleDateFormat("D");
 /**


* constructeur de base initialise a 00:00:00

*/
 private JourHeure(){
  this(0,"00:00:00");
 }
 /**


* constructeur par saisi du nombre de jour et de l'heure

* @param p_NbrJour au format int

* @param p_heure au format HH:MM:SS

*/
 public JourHeure(int p_NbrJour, String p_heure){
  super();
  Date d = new Date(0);
  formatHeure.setTimeZone(TimeZone.getTimeZone("GMT+0"));
  formatJour.setTimeZone(TimeZone.getTimeZone("GMT+0"));
  try {
   d = formatHeure.parse(p_heure);
   this.setTime(d.getTime());
  } catch (ParseException e) {
   e.printStackTrace();
  }
  this.setTime(86400000L*p_NbrJour+this.getTime());
 }
 /**


* constructeur avec uniquement l'heure

* @param p_heure au format HH:MM:SS

*/
 public JourHeure(String p_heure){
  this(0,p_heure);
 }
 //METHODES
 /**


* methode retournant la difference avec un autre JourHeure

*/
 public JourHeure differenceAvecJourHeure(JourHeure p_jh){
  JourHeure ret_jh=new JourHeure();
  ret_jh.setTime(Math.abs(getTime()-p_jh.getTime()));
  return ret_jh;
 }
 /**


* methode permettant d'ajouter un temps

* @param p_jh

*/
 public void calcul_Ajouter(JourHeure p_jh){
  this.setTime(this.getTime()+p_jh.getTime());
 }
 /**


* methode permettant de soustraire un temps

* @param p_jh

*/
 public void calcul_Retirer(JourHeure p_jh){
  this.setTime(this.getTime()-p_jh.getTime());
 }
 /**


* methode toString au format suivant : "3j 15:50:23"

*/
 public String toString(){
  int jour = Integer.parseInt(formatJour.format(this))-1;
  return jour+"j "+formatHeure.format(this);
 }
}

Conclusion :

Etant novice, j'aimerai des remarques constructives. Merci

J'espère que cela aidera certain d'entre vous.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.