2012-03-07 6 views
2

JodaTimeのPeriodクラスで奇妙な問題が発生しました。私は、8分19秒(これはこの時点で正しい)と明記されているPT8M19.966Sとして印刷されているPeriodオブジェクトをインスタンス化したところに来て、Period.toMillisを呼び出します。私が得た結果は、このメソッドが返すものとは明らかに異なる968や152などの乱数です。だから私はある種のバグか、私の側からの悪用なのかなと思います。Joda TimeのPeriod.getMillisが不正確な数値を返します

+1

再現可能な例を表示 – skaffman

+2

...このメソッドは存在しませんか? –

+0

申し訳ありませんが、私はgetMillis()を意味しました... –

答えて

7

getMillis()を意味しますか? javadocは、期間のミリ秒単位ではなく、期間のミリ秒の部分だけを返します。

+0

私は...私はドキュメントを読んだが、明らかに私は '部分'の事を逃した。私はStandandMillisには見えないので、toStandardSeconds()。getSeconds()* 1000を使う必要があると思います。今すぐ試してみてください... –

+5

これを行う正しい方法は、Period.toStandardDuration()です。getMillis () 'を返します。 –

+0

ありがとう、ルイ! –

1

上記ルイによって示唆されるように、あなたはPeriodDurationへの最初の変換、およびそのミリ秒を取得する必要があります。そのため

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

主な理由は、ReadablePeriodは、それが内部に持っている正確にどのように多くのミリ秒単位で把握していないということです、それをカレンダーに適用するまでたとえば、1か月間に何ミリ秒かかりますか?今月がカレンダーに適用されるまで、私たちは答えを得ることができません。

関連する問題