2012-02-03 11 views
0

次のコードでは日数が正しく表示されないため、日数と分数も印刷する必要があります。JODAを取得する所要時間

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. 
+0

そこにこれらの数字を_are_何?彼らはどういう意味ですか? –

+0

私はコードが正しいと賭けています。あなたの前提は間違っています。期待されることを理解してください。 – duffymo

+0

どのバージョンのJoda Time? – Bill

答えて

0

この現象は、the javadocsで説明されている:「期間は、すべての残り時間が時間この場合には、最大利用可能な正確なフィールドに格納され、その後一日よりも大きくなっています。」

あなたがしようとしていることとは対照的に、あなたがしようとしていることを説明すれば、私たちは助けてくれるはずです。例えば、私はあなたがp2.getDays()から取得しようとしていると思うものを見つけるために:。

Days.daysBetween(dateTime1, dateTime2).getDays() 
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 
0

次は十分ではない:System.out.println(duration.getStandardDays());

関連する問題