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 datetime
y 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