所以我有兩個日期選擇器的開始和結束時間,它們返回DateTime。JodaTime無法正常化PeriodType
我需要以「小時小時分鐘」格式計算這兩次之間的持續時間,例如「1小時30分鐘」。 如果有一天的差異,它會顯示「24小時」,所以我們使用小時而不是幾天。
我遇到的問題是,無論我得到這個工作,它會打破,如果用戶選擇一個月前。他們從來不應該選擇一個月,而是可以選擇。
我得到這個錯誤:
java.lang.UnsupportedOperationException: Unable to normalize as PeriodType is missing either years or months but period has a month/year amount: P1M3W6DT1H
at org.joda.time.Period.normalizedStandard(Period.java:1640)
而且我的代碼是:
Period durationHoursAndMinutes = new Period(startDate.toLocalDateTime(), endDate.toLocalDateTime()).normalizedStandard(PeriodType.time());
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendHours()
.appendSuffix(getResources().getString(R.string.mytrips_tripview_rail_waitTime_hr))
.appendSeparator(" ")
.appendMinutes()
.appendSuffix(getResources().getString(R.string.mytrips_tripview_rail_waitTime_min))
.toFormatter();
if(durationHoursAndMinutes.getMinutes() > 0){
return formatter.print(durationHoursAndMinutes);
}else {
return null;
}
我看着爲PeriodType的代碼和它說,拋出異常,如果個月= 0,它不會。只是想知道是否有辦法解決這個問題。 感謝您的幫助
你能舉一個簡短但完整的例子來證明這個問題嗎? (你可能不需要你的格式化器 - 它幾乎肯定不需要在Android上,一個小的控制檯應用程序展示了這個問題會使這個更清晰。) – 2015-03-25 12:03:04
請注意,你的要求,幾個月不會! = 0顯然是錯誤的報告失敗期間:P1M3W6DT1H – 2015-03-25 12:04:38
@JonSkeet我剛剛在代碼中看到它說了一些關於拋出異常如果月!= 0 – goodgamerguy 2015-03-25 12:11:51