2010-08-18 14 views
10

Ich benutze eine Art Stoppuhr in meinem Projekt und ich habeAndroid Java: Wie zwei Mal subtrahieren?

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

Ich brauche ein Ergebnis aus diesen beiden Werten wie final time = stop - start

ich einige Beispiele gefunden, aber sie alle sind sehr verwirrend.

Gibt es eine einfache Lösung?

Antwort

26

Wenn Sie Zeichenfolgen haben, müssen Sie sie mit java.text.SimpleDateFormat in eine java.util.Date analysieren. Etwas wie:

 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(); 

Hier diff ist die Anzahl der Millisekunden verstrichen 18.40.10 bis 19.05.15.

EDIT 1:

ein Verfahren online diese gefunden (bei 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:

Wenn Sie es als String wollen (dies eine schlampige Art und Weise ist, aber es funktioniert):

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

EDIT 3:

Wenn Sie die Millisekunden nur wollen, tun dies

long timeMS = diff % 1000; 

Sie können dann, dass durch 1000 teilen den Bruchteil Ihrer Sekunden zu erhalten.

+0

Aham sah ich Proben wie das aber wieder brauche ich Ergebnis als 01: 10.34 h, hier bekomme ich das Ergebnis in Millisekunde und brauche mehr Mathematik um das gewünschte Ergebnis zu bekommen, gibt es einfachste Lösung? – Nezir

+0

Siehe meine Bearbeitung oben: – jcb

+0

Wie werden Sie Millisekunden in Ihrem Ergebnis erhalten, wenn Ihre Zeit nur Stunden, Minuten und Sekunden aufzeichnet? – jcb

11

Angenommen, Sie verwenden java.util.Date:

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

Das Ergebnis wird die Gesamtzeit in Millisekunden betragen.

+1

Dank Thierry Ich habe eine Aufgabe abgeschlossen :) – Nezir