Unten ist die Methode, die ich geschrieben habe:
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;
}
Aus meiner Methode können Sie nun ersehen, dass ich ein Joda-Time DateTime- Objekt im Objektnamen habe datetime
und aus meinem Ergebnis einen Zeitstempel erhalte, den ich in Jodatime konvertiere punchTime
. Jetzt möchte ich den Unterschied zwischen diesen beiden Daten herausfinden. Wie mache ich das?
Days.daysBetween(d1, d2)
ist der Nachbar Ihres FreundesAntworten:
Dadurch erhalten Sie den Unterschied zwischen zwei DateTime-Objekten in Millisekunden:
quelle
Minutes.minutesBetween
.Etwas wie...
Welche Ausgänge
oder
Welches ist wahrscheinlich mehr, was Sie suchen
quelle
LocalTime
), aber ich würde vorschlagen, dass Sie es testen und sehen. Die Frage wäre jedoch, in welcher Zeitzone der resultierende Wert dargestellt würde.Etwas wie...
quelle
In der Praxis denke ich, dass dies immer das gleiche Ergebnis liefert wie die Antwort basierend auf
Duration
. Für eine andere Zeiteinheit als Minuten ist dies jedoch möglicherweise korrekter. Zum Beispiel gibt es 365 Tage von 2016/2/2 bis 2017/2/1, aber tatsächlich ist es weniger als 1 Jahr und sollte auf 0 Jahre gekürzt werden, wenn Sie verwendenPeriodType.years()
.Theoretisch könnte dasselbe aufgrund von Schaltsekunden für Minuten passieren, aber Joda unterstützt keine Schaltsekunden.
quelle