Bonjour,

j'ai un soucis avec l'utilisation des objets gérant les dates/heures, j'aimerai lancer un thread tout les jours à une heure précise mais je n'arrive pas à calculer le sleep nécessaire lorsque l'on deploye l'application
Exemple :
-tout les jours à 3h lancer la tache A
Je déploye à un instant T, je dois faire T-A ou A-T selon le cas mais je ne m'en sors pas...
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
32
33
34
35
36
37
38
39
40
41
 
public void run() {
		boolean b;
		while (continu) {
			int i=0;
			int j=0;
 
			long iDelai=0;
 
			Calendar oMaintenant=Calendar.getInstance();
			String sAfficheMaintenant=oMaintenant.get(Calendar.HOUR_OF_DAY)+"h"+oMaintenant.get(Calendar.MINUTE)+"mn"+oMaintenant.get(Calendar.SECOND)+"s."+oMaintenant.get(Calendar.MILLISECOND)+"ms.";
 
			int iHeureMaintenant=oMaintenant.get(Calendar.HOUR_OF_DAY);
			int iMinuteMaintenant=oMaintenant.get(Calendar.MINUTE);
			System.out.println(sAfficheMaintenant);
 
//Demarrage à 3h du matin
			int HeureDemarrage=15;
			int MinuteDemarrage=12;
			GregorianCalendar gc=new GregorianCalendar();
			gc.add(Calendar.HOUR_OF_DAY,HeureDemarrage);
			gc.add(Calendar.MINUTE,MinuteDemarrage);
 
			Log.logger.error("Heure de demarage" +gc.toString());
			Log.logger.error("Heure actuel" +oMaintenant.toString());
			Log.logger.error(gc.getTimeInMillis()+" < "+oMaintenant.getTimeInMillis());
			if(gc.getTimeInMillis()<oMaintenant.getTimeInMillis()){
				iDelai=oMaintenant.getTimeInMillis()-gc.getTimeInMillis();
			}else{
				iDelai=gc.getTimeInMillis()-oMaintenant.getTimeInMillis();
			}
 
			Log.logger.error("Je dors "+iDelai);
			try {
				Thread.sleep(iDelai);
 
			} catch (InterruptedException e2) {
				// TODO Auto-generated catch block
				//			e2.printStackTrace();
			}
//ici le traitement....