我試圖使用「millis」構造函數設置我的Period對象並且相應地更新所有相關字段(年,月,周,天,小時,分鐘,秒)Joda時間,毫秒期間
也就是說,使用下面的代碼:
mPeriod = new Period(millis, PeriodType.standard());
不填寫相應的所有相關領域。 只有幾個星期和幾分鐘(輸入millis的1325965615539
)
有人可以幫我把這件事情弄清楚嗎?
我試圖使用「millis」構造函數設置我的Period對象並且相應地更新所有相關字段(年,月,周,天,小時,分鐘,秒)Joda時間,毫秒期間
也就是說,使用下面的代碼:
mPeriod = new Period(millis, PeriodType.standard());
不填寫相應的所有相關領域。 只有幾個星期和幾分鐘(輸入millis的1325965615539
)
有人可以幫我把這件事情弄清楚嗎?
可以使用Period#normalizedStandard();
但是它正常化,有沒有辦法可以Period
「在所有相關領域補」,因爲它不能對天數假設在幾個月或幾年。它能做的最好的就是把它變成幾周,幾天和時間的領域。
在此的Javadoc接觸,但不是很詳細:
如果期間包含年或月,那麼月將 規範化爲介於0和11天的現場及以下根據需要歸一化爲 ,但這個不會溢出到 個月字段。因此,1年15個月的時間將正常化爲3個月的2 年。但是1個月40天的期限將保持爲1個月,40天內爲 。
(重點煤礦)
如果你需要它歸到年和月,你需要構建Period
與這些字段的值。
或者,你可以使用一個Duration
:
Duration
以毫秒使用Duration#toPeriodFrom(ReadableInstant)
在給定的時間瞬間打造Period
開始(例如新DateTime()
)。根據該文檔,這應該工作:
這種轉換將決定一個時期的領域準確。 結果基於瞬時毫秒,瞬時的時間順序,標準週期類型和此持續時間的長度。
這裏是normalize()
應該做你的毫秒輸入:
import org.joda.time.Period;
class Normalize {
public static void main(String[] args) {
Period period = new Period(1325965615539L);
System.out.println(period);
System.out.println(period.normalizedStandard());
}
}
// outputs
PT368323H46M55.539S
P2192W2DT19H46M55.539S
通知第二條線已被歸,但最多隻能到幾周。
正常化沒有任何效果,它沒有做任何事情...... – Droritos 2012-01-15 19:45:46
@DrorWeiss - 它可能有效果,但可能不是你所期待的。我更新了我的答案,以澄清原因。 – 2012-01-15 19:57:37