簡體   English   中英

如何找到兩個Joda-Time DateTimes之間的差異,以分鍾為單位

[英]How to find difference between two Joda-Time DateTimes in minutes

以下是我寫的方法:

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;
}

現在從我的方法你可以看到我在一個名為datetime對象中有一個Joda-Time DateTime對象,從我的結果我得到一個時間戳,我轉換為jodatime punchTime 現在我想找出這兩個日期之間的差異,我該怎么做?

就像是...

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

這可能是你所追求的更多

這將使您獲得兩個DateTime對象之間的區別,以毫秒為單位:

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

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

就像是...

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年,如果使用PeriodType.years() ,則應截斷為PeriodType.years()

從理論上講,由於閏秒,同樣可能會發生幾分鍾,但Joda不支持閏秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM