[JAVA] ajouter X heures a une date

Bonjour,

mon problème JAVA est plutot simple mais ne connaissant rien en java je n’arrive pas a créer ce que j’ai besoin.

Je possède une date et une heure et je souhaiterai pouvoir additionner un nom défini d’heure a cette date.

exemple je possède la date :

07/05/2001 18h 28min 30 sec -----> on ajoute deux heures ----> 07/05/2001 20h 28min 30 sec

07/05/2001 23h 28min 30 sec -----> on ajoute deux heures ----> 08/05/2001 1h 28min 30 sec

en fait si on est en fin de journée il faut que cela passe automatiquement au jour suivant voir au mois ou a l’ann"e suivante si on est en fin de mois ou fin d’année.

Si vous donnez une réponse essayez d’être précis car je ne comprend pas beaucoup la java

je vous remercie d’avance

Bonjour,
c’est Calendar.add que tu doit utiliser.
avec Calendar.HOUR_OF_DAY en paramètre

utilise d’abord setTime pour passer ton objet “Date” d’origine
puis add et enfin getTime pour obtenir le nouvel objet “Date” :wink:

merci beaucoup de ton aide

j’avais trouver ces methodes dans l’API en fesant quelque recherche mais je n’arrive pas a les utiliser… Comme j’ai dit je débutte le java.

si j’ai par exemple les variable :

jour=12
mois=5
annee=2006 ou annee=06 je peux m’arranger a avoir l’un ou l’autre

heure =18
minute=45
seconde=20

et que je veux ajouter deux heure j’écrit quoi exactement.

Je te serai vraiment reconnaisant si ca ne te prend pas trop de temp de me faire cet exemple pour que je comprenne mieux parce que les API j’ai encore un peu de mal a les utiliser :sweet:

merci d’avance

D’accord,
alors pour t’aider un peu à utiliser la javadoc et comprendre les objets. Les objets sont conçus pour interragir entre eux d’un certain façon, et on se réfère parfois aux “design pattern” pour expliquer leur fonctionnement. Le Design pattern le plus courant est le “factory”: constitué de 2 classe: l’un correspondant aux objet de données que tu manipule, l’autre: le Factory, servant à créer le 1er type d’objet, et à centrealiser toutes les création d’objet.

Ici l’objet que tu veux manipuler est une Date, mais il n’a pas de méthode pour être manipulé, car il faut passer par sa “Factory” Calendar, en gros tous les objets Date que tu veux créer, devrait l’être par un objet Calendar. ça c’est la théorie, et malheureusement, la pratique est un peu différente… mais oublions ça pour l’instant.

Il faut donc chercher dans l’API Clander les méthodes utiles pour créer les Dates de la bonne façon.


//1. tu veux obtenir une date en ne connaissant que ses années mois jour hms, tu passe par Calendar:
Calendar cal = Calendar.getInstance();
cal.set(year,month,day,hour,minut,seconds);
// tu peux éventuellement conserver cette date pour t'en reservir
Date d1 = cal.getTime();
// tu ajoute les heures
cal.add(Calendar.HOUR_OF_DAY,shift_hours);
//tu récupère cette date sous le format "Date" si tu doit t'en resservir en Java, pour l'afficher par exemple
Date d2 = cal.getTime();
// ou alors champs par champs si tu veux reséparer les données années mois jour
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);

int hour = cal.get(Calendar.HOUR_OF_DAY);
etc.

note: en général tu peux très bien garder toutes tes dates au Format “Date” sans passer par des int, c’est plus pratique pour l’afficher, la passer à une base de données, les comparer et trier, etc.

par exemple passe par la classe SimpleDateFormat pour l’afficher.
:slight_smile:
Edité le 13/11/2007 à 15:23

Merci beaucoup pour cet explication détailler je comprend bien maintenant :clap:

je vais tester tous de suite

Un grand merci :slight_smile:

:wink: