让JODA持续时间起作用

时间:2012-02-03 01:41:50

标签: java jodatime

以下代码无法正确打印日期,我还需要打印日期和分钟。

Duration duration = new Duration(1328223198241L - 1326308781131L);
Period p2 = new Period(duration.getMillis());
System.out.println(p2.getDays()); // prints 0, should print 22 days
System.out.println(p2.getHours()); // prints  531 which is expected.

3 个答案:

答案 0 :(得分:3)

根据javadoc,“仅使用句点类型中的精确字段。对于标准句点类型,这仅是时间字段。因此年,月,周和字段将没有人口。“因此你得零。

考虑这个替代方案。

Duration duration = new Duration(1328223198241L - 1326308781131L);      
Period p2 = new Period(duration.getMillis());
System.out.println(p2.getHours()); // prints  531 which is expected.
System.out.println(p2.toStandardDays().getDays()); // prints 22 days

答案 1 :(得分:0)

此行为在the javadocs中解释:"持续时间大于一天,然后所有剩余持续时间将存储在最大可用精确字段中,在这种情况下为小时。"

如果您解释了您尝试做的事情,而不是您尝试做的事情,那么我相信我们能够提供帮助。例如,要查找我认为您尝试从p2.getDays()获取的内容:

Days.daysBetween(dateTime1, dateTime2).getDays()

答案 2 :(得分:0)

以下内容是否足够:System.out.println(duration.getStandardDays());