奇怪的是,我對許多類似的帖子有反面問題;我試圖使用JodaTime(在Android上)給我一個dd:hh:mm:ss類型的輸出,並且失敗了。代碼是;JodaTime:打印期限爲天:小時:分:秒
public String GetEventTimeString(boolean withMS, int eventTime)
{
Period p = new Period(eventTime, PeriodType.yearMonthDayTime());
if (withMS)
return _formatter_withms.print(p);
else return _formatter_withoutms.print(p);
}
當我使用調試器p
設置後停止,我看到p本身具有的小時值設置爲568和天值爲零,所以我還沒有張貼創建格式化代碼。 eventTime是一個int值,表示經過時間,以ms爲單位,在這種情況下值爲2045489151。
如果數字大小有些奇怪,而且它是一個int而不是很長,我嘗試了一個new Period(1500000L, PeriodType.yearMonthDayTime())
並得到了0天,25小時,0分鐘和秒的週期。
探索期間的iType成員的結構,我看到一個數組iTypes包含元素「年」,「月」等。我還看到一個數組iIndices似乎將類型映射到其他數組中的元素。大多數指標是合理的,但對應於「天數」的指數是-1。所以看起來PeriodType.yearMonthDayTime()
沒有做我認爲文檔說它應該。
如果我嘗試PeriodType.yearWeekDayTime
我會得到相同的結果。如果我嘗試PeriodType.yearWeekDay
那麼三個字段爲零,具有我的25小時測試值。所以這不僅僅是一個PeriodType的行爲不當。
想知道從我的相當隨意(挑選一個數字並保持加零)到恰好25小時的巧合,我試了1510000,得到了25h 10m 0s。但是,當您手動進行轉換時,這兩者實際上都沒有任何意義!
這是在Android上,最新的Android Studio 1.3.2,不確定如何知道我使用的是哪個版本的JodaTime,但它是在過去的幾個月內,這似乎有點太明顯,是一個晦澀的bug - 我認爲更多的是誤解和深入挖掘的結合。
有沒有人對發生了什麼有什麼想法?
簡短但完整的可編譯代碼會很好;-)。你如何構建「_formatter ...」?它是'PeriodFormatter'嗎? –
好,正如我在文中所說的,我將問題確定爲在格式化程序之前,所以真的沒有意義。 –
你說得對。在我寫完我的評論後,我終於明白,你的問題與格式不相關,但與期間的規範化有關。 –