2010-08-18 18 views
10

utilizzare un qualche tipo di cronometro nel mio progetto e hoAndroid Java: come sottrarre due volte?

start time ex: 18:40:10 h 
stop time ex: 19:05:15 h 

Ho bisogno di un risultato di questi due valori come final time = stop - start

ho trovato alcuni esempi, ma sono tutti molto confuso.

Esiste una soluzione semplice?

risposta

26

Se si dispone di stringhe è necessario analizzarle in un java.util.Date utilizzando java.text.SimpleDateFormat. Qualcosa di simile:

 java.text.DateFormat df = new java.text.SimpleDateFormat("hh:mm:ss"); 
     java.util.Date date1 = df.parse("18:40:10"); 
     java.util.Date date2 = df.parse("19:05:15"); 
     long diff = date2.getTime() - date1.getTime(); 

Ecco diff è il numero di millisecondi trascorsi 18:40:10-19:05:15.

EDIT 1:

trovato un metodo online per questo (a http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-time.html?page=2):

int timeInSeconds = diff/1000; 
    int hours, minutes, seconds; 
    hours = timeInSeconds/3600; 
    timeInSeconds = timeInSeconds - (hours * 3600); 
    minutes = timeInSeconds/60; 
    timeInSeconds = timeInSeconds - (minutes * 60); 
    seconds = timeInSeconds; 

EDIT 2:

Se si desidera come una stringa (questo è un modo sciatto, ma funziona):

String diffTime = (hours<10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds) + " h"; 

EDIT 3:

Se si desidera che i millisecondi solo fare questo

long timeMS = diff % 1000; 

È quindi possibile dividere che per 1000 per ottenere la parte frazionaria di vostri secondi.

+0

Aham ho visto campioni del genere, ma ancora una volta ho bisogno di risultato come 01: 10.34 h, qui ottengo risultato in millisecondi e ho bisogno di più matematica per ottenere risultato desiderato, è la soluzione più semplice? – Nezir

+0

Vedere la mia modifica sopra: – jcb

+0

Come farai a ottenere millisecondi nel risultato se il tuo tempo è solo la registrazione di ore, minuti e secondi? – jcb

11

Supponendo che si sta utilizzando java.util.Date:

long totalTime = endDate.getTime() - startDate.getTime(); 

Il risultato sarà il tempo totale in millisecondi.

+1

Grazie Thierry Ho completato un compito :) – Nezir