Voici la méthode que j'ai écrite:
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;
}
Maintenant, à partir de ma méthode, vous pouvez voir que j'ai un objet Joda-Time DateTime dans l'objet nommé datetime
et à partir de mon résultat, j'obtiens un horodatage que je convertis en jodatime punchTime
. Maintenant, je veux connaître la différence entre ces deux dates, comment faire?
Days.daysBetween(d1, d2)
est le voisin de votre amiRéponses:
Cela vous permettra de faire la différence entre deux objets DateTime en millisecondes:
la source
Minutes.minutesBetween
.Quelque chose comme...
Quelles sorties
ou
Ce qui est probablement plus ce que vous recherchez
la source
LocalTime
), mais je vous suggère de la tester et de voir. La question serait cependant, dans quel fuseau horaire la valeur résultante serait-elle représentée?Quelque chose comme...
la source
En pratique, je pense que cela donnera toujours le même résultat que la réponse basée sur
Duration
. Pour une unité de temps différente de celle des minutes, cependant, cela peut être plus correct. Par exemple, il y a 365 jours du 2016/2/2 au 2017/2/1, mais en fait, c'est moins d'un an et devrait être tronqué à 0 ans si vous utilisezPeriodType.years()
.En théorie, la même chose pourrait se produire pendant des minutes à cause des secondes intercalaires, mais Joda ne prend pas en charge les secondes intercalaires.
la source