java - restar - Diferencia en horas de dos objetos de calendario
restar dos horas en java (2)
Tengo dos objetos de Calendar
, y quiero comprobar cuál es la diferencia entre ellos, en horas.
Aquí está el primer Calendar
Calendar c1 = Calendar.getInstance();
Y el segundo Calendar
Calendar c2 = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
c2.setTime(sdf.parse("Sun Feb 22 20:00:00 CET 2015"));
Ahora digamos que c1.getTime()
es: Fri Feb 20 20:00:00 CET 2015
y c2.getTime()
es Sun Feb 22 20:00:00 CET 2015
.
Entonces, ¿hay algún código que devuelva la diferencia entre el primer y el segundo Calendar
en horas? En mi caso debería devolver 48
.
En Java 8 puedes hacer
long hours = ChronoUnit.HOURS.between(c1.toInstant(), c2.toInstant());
Puedes probar lo siguiente:
long seconds = (c2.getTimeInMillis() - c1.getTimeInMillis()) / 1000;
int hours = (int) (seconds / 3600);
O usando la clase Period
la API de Joda-Time, puede usar el public Period(long startInstant, long endInstant)
constructor public Period(long startInstant, long endInstant)
y recuperar el campo de horas:
Period period = new Period(c1.getTimeInMillis(), c2.getTimeInMillis());
int hours = period.getHours();