A continuación se muestra el método que escribí:
public List<Map<String, Object>> loadNotYetInEmployee(int shift, Date date,
int transitionVal, String type, User user) {
DateTime datetime = new DateTime(date);
datetime = datetime
.plus(Period.minutes(shiftTiming.getSession1InTime()));
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
sql = SqlMapUtils.getSql("attendance.attendancestatus.latein",
parameters);
result = getJdbcTemplate().queryForList(sql);
for (int i = 0; i < result.size(); i++) {
Date punchInTime = (Date) result.get(i).get("punchtime");
DateTime punchTime = new DateTime(punchInTime);
}
return result;
}
Ahora, desde mi método, puede ver que tengo un objeto Joda-Time DateTime en un objeto llamado datetimey de mi resultado obtengo una marca de tiempo que estoy convirtiendo en jodatime punchTime. Ahora quiero averiguar la diferencia entre estas dos fechas, ¿cómo hago eso?

Days.daysBetween(d1, d2)es el vecino de tu amigoRespuestas:
Esto le dará la diferencia entre dos objetos DateTime en milisegundos:
fuente
Minutes.minutesBetween.Algo como...
Que salidas
o
Que es probablemente más de lo que buscas
fuente
LocalTime), pero te sugiero que lo pruebes y lo veas. Sin embargo, la pregunta sería: ¿en qué zona horaria se representaría el valor resultante?Algo como...
fuente
En la práctica, creo que esto siempre dará el mismo resultado que la respuesta basada en
Duration. Sin embargo, para una unidad de tiempo diferente a los minutos, podría ser más correcto. Por ejemplo, hay 365 días desde 2016/2/2 hasta 2017/2/1, pero en realidad es menos de 1 año y debería truncarse a 0 años si lo usaPeriodType.years().En teoría, lo mismo podría ocurrir durante minutos debido a los segundos bisiestos, pero Joda no admite segundos bisiestos.
fuente