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....
Partager