Originariamente inviato da marasma1
Innanzitutto grazie per la risposta.Ho modificato il mio script cosi:
int ore = (int)(differenza/3600000); //60*60*1000
int oreInMill = ore * 3600000;
differenza = differenza - oreInMill;
int min = (int)(differenza/60000);
int minutiInMill = min * 60000;
differenza = differenza - minutiInMill;
int sec = (int)(differenza/60);
Troppo complicato. L'ho detto, basta usare divisione e modulo (che non hai usato) ma sopratutto usarli bene.

codice:
int secondi = (int) (differenza / 1000 % 60);
int minuti = (int) (differenza / 60000 % 60);
int ore = (int) (differenza / 3600000);
Che tra l'altro è pure semplice, pulito e comprensibile.

Originariamente inviato da marasma1
non si potrebbe impostare a monte il TimeZone di tutti i GregorianCalendar e poi far stampare la data dal toString?.
Sì certo, usando un DateFormat o SimpleDateFormat e impostandogli il timezone UTC.
Ma il risultato avrebbe "senso" solo se la differenza non supera 1 mese. In pratica stamperesti quello che è il tempo nel mese del Gennaio 1970 ... dopodiché, superato, non avrebbe più senso.