Abaixo está o método que escrevi:
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;
}
Agora, no meu método, você pode ver que eu tenho um objeto Joda-Time DateTime no objeto nomeado datetime
e, do meu resultado, estou obtendo um carimbo de data e hora que estou convertendo para jodatime punchTime
. Agora eu quero descobrir a diferença entre essas duas datas, como faço isso?
Days.daysBetween(d1, d2)
É o vizinho de seu amigoRespostas:
Isso fará a diferença entre dois objetos DateTime em milissegundos:
fonte
Minutes.minutesBetween
.Algo como...
Quais saídas
ou
O que provavelmente é mais do que você procura
fonte
LocalTime
), mas eu sugiro que você teste e veja. A questão seria: em qual fuso horário o valor resultante seria representado?Algo como...
fonte
Na prática, acho que isso sempre dará o mesmo resultado que a resposta com base
Duration
. Porém, para uma unidade de tempo diferente de minutos, pode ser mais correto. Por exemplo, existem 365 dias de 2/2/16 a 1/2/2017, mas na verdade é menos de 1 ano e deve truncar para 0 anos se você usarPeriodType.years()
.Em teoria, o mesmo poderia acontecer por minutos por causa de segundos bissextos, mas Joda não suporta segundos bissextos.
fonte