2010-08-18 17 views
10

que utilizar algún tipo de cronómetro en mi proyecto y tengoAndroid Java: ¿Cómo restar dos veces?

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

necesito resultado de esos dos valores como final time = stop - start

he encontrado algunos ejemplos, pero todos ellos son muy confusas.

¿Hay alguna solución simple?

Respuesta

26

Si tiene cadenas, debe analizarlas en java.util.Date usando java.text.SimpleDateFormat. Algo así como:

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

Aquí diff es el número de milisegundos transcurridos 18:40:10-19:05:15.

EDIT 1:

encontrado un método en línea para esto (en 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:

Si desea como una cadena (esta es una manera descuidada, pero funciona):

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

Datos 3:

Si desea que los milisegundos a hacer esto

long timeMS = diff % 1000; 

A continuación, puede dividir que por 1000 para obtener la parte fraccionaria de sus segundos.

+0

Aham vi ejemplos como ese pero nuevamente necesito el resultado como 01: 10.34 h, aquí obtengo el resultado en milisegundos y necesito más matemáticas para obtener el resultado deseado, ¿hay la solución más simple? – Nezir

+0

Ver mi edición superior: – jcb

+0

¿Cómo va a obtener milisegundos en su resultado si su tiempo solo está registrando horas, minutos y segundos? – jcb

11

Suponiendo que usted está utilizando java.util.Date:

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

El resultado será el tiempo total en milisegundos.

+1

Gracias Thierry Completé una tarea :) – Nezir