[java] 두 Joda-Time DateTime의 차이점을 분 단위로 찾는 방법

아래는 내가 쓴 방법입니다.

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는 윤초를 지원하지 않습니다.


답변