una sumar studio restar rango minutos horas fechas fecha entre diferencia calcular actual android date seconds

sumar - Diferencia de Android entre dos fechas en segundos



restar horas en java (3)

Probé diferentes métodos en la web pero no pude hacerlo funcionar.

Cursor cursor = sqlite.myDataBase.rawQuery("SELECT StartDate, EndDate FROM Tracks Where Id="+''"''+trackId+''"'',null); SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startDate = outputFormat.parse(cursor.getString(cursor.getColumnIndex("StartDate"))); Date endDate = outputFormat.parse(cursor.getString(cursor.getColumnIndex("EndDate")));

De esta forma obtengo ambas fechas en buen formato. Ahora quiero encontrar la diferencia entre EndDate y Startdate en segundos.

¿Algún consejo? Gracias.


Simplemente complementando esta respuesta para otros desarrolladores (como yo) que están usando Time en lugar de Date.

Time t1 = new Time(); t1.setToNow(); Thread.sleep(1000); Time t2 = new Time(); t2.setToNow(); diff = TimeUnit.MILLISECONDS.toSeconds(t2.toMillis(true)-t1.toMillis(true));


pruebe el siguiente método: -

public String twoDatesBetweenTime(String oldtime) { // TODO Auto-generated method stub int day = 0; int hh = 0; int mm = 0; try { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date oldDate = dateFormat.parse(oldtime); Date cDate = new Date(); Long timeDiff = cDate.getTime() - oldDate.getTime(); day = (int) TimeUnit.MILLISECONDS.toDays(timeDiff); hh = (int) (TimeUnit.MILLISECONDS.toHours(timeDiff) - TimeUnit.DAYS.toHours(day)); mm = (int) (TimeUnit.MILLISECONDS.toMinutes(timeDiff) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(timeDiff))); } catch (ParseException e) { e.printStackTrace(); } if(day==0) { return hh + " hour " + mm + " min"; } else if(hh==0) { return mm + " min"; } else { return day + " days " + hh + " hour " + mm + " min"; } }


Puede convertir un objeto de fecha en largo (milisegundos desde el 1 de enero de 1970) y luego usar TimeUnit para obtener el número de segundos:

long diffInMs = endDate.getTime() - startDate.getTime(); long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMs);

Editar: -Corregió el nombre de la variable diffInMs que se escribió diffInM (i) s en la segunda línea.