아래는 내가 쓴 방법입니다.
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;
}
이제 내 방법 에서 객체에 Joda-Time DateTime 객체가 datetime
있고 결과에서 jodatime으로 변환하는 타임 스탬프가 하나 있음을 알 수 punchTime
있습니다. 이제이 두 날짜 사이의 차이점을 찾으려면 어떻게해야합니까?
답변
이렇게하면 두 DateTime 객체의 차이를 밀리 초 단위로 얻을 수 있습니다.
DateTime d1 = new DateTime();
DateTime d2 = new DateTime();
long diffInMillis = d2.getMillis() - d1.getMillis();
답변
뭔가 …
DateTime today = new DateTime();
DateTime yesterday = today.minusDays(1);
Duration duration = new Duration(yesterday, today);
System.out.println(duration.getStandardDays());
System.out.println(duration.getStandardHours());
System.out.println(duration.getStandardMinutes());
어떤 출력
1
24
1440
또는
System.out.println(Minutes.minutesBetween(yesterday, today).getMinutes());
아마 당신이 쫓고있는 것보다
답변
뭔가 …
Minutes.minutesBetween(getStart(), getEnd()).getMinutes();
답변
DateTime d1 = ...;
DateTime d2 = ...;
Period period = new Period(d1, d2, PeriodType.minutes());
int differenceMinutes = period.getMinutes();
실제로 나는 이것이 항상을 기반으로 한 답변과 동일한 결과를 줄 것이라고 생각합니다 Duration
. 그러나 분이 아닌 다른 시간 단위의 경우 더 정확할 수 있습니다. 예를 들어 2016/2/2에서 2017/2/1까지 365 일이 있지만 실제로는 1 년 미만이며를 사용하는 경우 0 년으로 잘립니다 PeriodType.years()
.
이론적으로 윤초로 인해 몇 분 동안 동일하게 발생할 수 있지만 Joda는 윤초를 지원하지 않습니다.