147

以下は私が書いた方法です:

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 に変換している 1 つのタイムスタンプを取得していることがわかりpunchTimeます。これら 2 つの日付の違いを知りたいのですが、どうすればよいですか?

4

4 に答える 4

471

何かのようなもの...

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

これはおそらくあなたが求めているものです

于 2012-10-12T03:59:39.433 に答える
82

これにより、2 つの DateTime オブジェクトの差がミリ秒単位で取得されます。

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

long diffInMillis = d2.getMillis() - d1.getMillis();
于 2012-10-12T04:01:17.530 に答える