Joda时间,毫秒期间
问题描述:
我试图使用“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