Joda Time的Period.getMillis返回不准确的数字

时间:2012-03-07 14:56:14

标签: java jodatime period

我遇到了JodaTime的Period类的一个奇怪的问题。我来到了我已经实例化了一个Period对象的点,它打印为:PT8M19.966S,清楚地说8分19秒(此时这是正确的),我调用Period.toMillis。我得到的结果是一些随机数,例如968或152,这些数字显然不是这个方法应该返回的数字。所以我想知道它是否是某种错误,或者是我身边的误用。

2 个答案:

答案 0 :(得分:7)

你的意思是getMillis()? javadoc表示它只返回句点的毫秒部分,而不是句点的持续时间(以毫秒为单位)。

答案 1 :(得分:1)

正如路易斯上面所建议的那样,您应首先将Period转换为Duration,然后再获取其毫秒数:

long millis = period.toStandardDuration().getMillis();

主要原因是ReadablePeriod在将日历应用到日历之前不确切知道它内部有多少毫秒。例如,一个月内有多少毫秒?在将本月应用于日历之前,我们无法得到答案。