Poniżej metoda, którą napisałem:
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;
}
Teraz z mojej metody widać, że mam obiekt DateTime Joda-Time w obiekcie o nazwie i na podstawie wyniku otrzymuję jeden znacznik czasu, który konwertuję na jodatime . Teraz chcę poznać różnicę między tymi dwiema datami, jak mam to zrobić?datetime
punchTime
Days.daysBetween(d1, d2)
jest sąsiadem twojego przyjacielaOdpowiedzi:
W ten sposób uzyskasz różnicę między dwoma obiektami DateTime w milisekundach:
źródło
Minutes.minutesBetween
.Coś jak...
Jakie wyjścia
lub
Co jest prawdopodobnie bardziej tym, czego szukasz
źródło
LocalTime
), ale sugerowałbym, abyś to przetestował i zobaczył. Powstaje jednak pytanie, w której strefie czasowej byłaby reprezentowana wynikowa wartość?Coś jak...
źródło
W praktyce myślę, że zawsze da to ten sam wynik, co odpowiedź na podstawie
Duration
. Jednak dla innej jednostki czasu niż minuty może to być bardziej poprawne. Na przykład istnieje 365 dni od 2016/2/2 do 2017/2/1, ale w rzeczywistości jest to mniej niż 1 rok i powinno zostać skrócone do 0 lat, jeśli używaszPeriodType.years()
.Teoretycznie to samo może się zdarzyć przez kilka minut z powodu sekund przestępnych, ale Joda nie obsługuje sekund przestępnych.
źródło