web-dev-qa-db-fra.com

Comment trouver la différence entre deux DateTimes Joda-Time en minutes

Ci-dessous 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, grâce à ma méthode, vous pouvez voir que j’ai un objet Joda-TimeDateTime dans= nommé datetime et que mon résultat me donne un horodatage que je convertis jodatime punchTime. Maintenant, je veux savoir la différence entre ces deux dates, comment puis-je le faire?

130
Deepak Kumar

Cela vous donnera la différence entre deux objets DateTime en millisecondes:

DateTime d1 = new DateTime();
DateTime d2 = new DateTime();

long diffInMillis = d2.getMillis() - d1.getMillis();
70
alfredaday

Quelque chose comme...

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());

Quelles sorties

1
24
1440

ou

System.out.println(Minutes.minutesBetween(yesterday, today).getMinutes());

Ce qui est probablement plus ce que vous recherchez

433
MadProgrammer

Quelque chose comme...

Minutes.minutesBetween(getStart(), getEnd()).getMinutes();
4
Carlos Chaguendo
DateTime d1 = ...;
DateTime d2 = ...;
Period period = new Period(d1, d2, PeriodType.minutes());
int differenceMinutes = period.getMinutes();

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 pourrait être plus correct. Par exemple, il y a 365 jours du 2016/2/2 au 2017/2/1, mais en réalité, ils durent moins d'un an et doivent être tronqués à 0 ans si vous utilisez PeriodType.years().

En théorie, la même chose pourrait se produire pendant quelques minutes à cause des secondes intercalaires, mais Joda ne prend pas en charge les secondes intercalaires.

0
morningstar