ciao a tutti.

la mia applicazione deve eseguire su un database una stored procedure ad un determinato orario

la funzione per ottenere i millisecondi da aspettare (comprensivo del conto delle 24 ore)

e' la seguente:

codice:
long timeout;
Calendar now = new GregorianCalendar();

Calendar startsAt = new GregorianCalendar(now.get(Calendar.YEAR),now.get(Calendar.MONTH),now.get(Calendar.DATE),time,0,0);
								
if (now.before(startsAt)){
		timeout = (startsAt.getTimeInMillis() - now.getTimeInMillis());
} else {
                long day = 86400000L;
		timeout =  ( day - (now.getTimeInMillis() - startsAt.getTimeInMillis()));
		}		
return timeout;
time e' un intero che va da 0 a 23.

questa funzione viene richiamata ogni volta che la stored procedure termina, cosi' da risettare il timer considerando anche il tempo di esecuzione della procedura. il problema e' che dopo 4 giorni ha anticipato di 30 minuti e rotti l'ora di esecuzione... aiuto?