私は、の総計ミリ秒(ではなく、のミリ秒フィールド)をPeriodオブジェクトインスタンスから取得しようとしています。私は簡単にそれを与える方法を見つけることができなかったので、私は複数のコンバージョンを試みました。Jodaの時間、合計のミリ秒までの期間
誰もそれを必要とし、それを取得することができましたか?
(私は負の期間を把握するために、私のパッチのためにこれを必要とする;負ミリ秒=負の期間)
私は、の総計ミリ秒(ではなく、のミリ秒フィールド)をPeriodオブジェクトインスタンスから取得しようとしています。私は簡単にそれを与える方法を見つけることができなかったので、私は複数のコンバージョンを試みました。Jodaの時間、合計のミリ秒までの期間
誰もそれを必要とし、それを取得することができましたか?
(私は負の期間を把握するために、私のパッチのためにこれを必要とする;負ミリ秒=負の期間)
月と年のようなフィールドが可変であるので、あなたは、Period
から直接ミリ秒を取得することはできませんミリ秒単位で表します。
この作業を行うには、Period
が実際のミリ秒の時間を計算できる「ベースライン」の瞬間を提供する必要があります。
たとえば、Period.toDurationFrom
およびPeriod.toDurationTo
メソッドは、このようなベースラインインスタントをとり、Duration
オブジェクトを計算します。このオブジェクトを次に取得できます。
toDurationFrom
ためJavadocは言う:
はスタートの瞬間に関連し、この期間の合計ミリ秒の時間を取得します。 このメソッドは、期間を計算するために指定された瞬間に期間を追加します。
期間の期間が異なるため、インスタントを指定する必要があります。たとえば、1ヶ月の期間は、長さの異なる月のために28〜31日に相当する期間(ミリ秒単位)で異なる場合があります。同様に、夏時間のカットオーバー時には、1日は通常23〜25時間で変わります。
したがって、アプリケーションの適切なベースラインインスタントを選択する必要があります。
から特定の時間を取得する場合は、DateTimeクラスのplus()メソッドまたはminus()メソッドを使用してミリ秒を取得します。
今からミリ秒を取得
DateTime start = new DateTime(); //NOW
DateTime end = start.plus(<your period>);
long millis = end.getMillis() - start.getMillis();
はそれを得た: のDateTimeゼロ=新日時(0); long millis = period.toDurationFrom(ゼロ).getMillis(); – Droritos
@DrorWeiss:これは比較的短期間だけ有効です。月より長い期間を使用し始めると、歪んだ結果になることがあります。 – skaffman
私はそれをテストしました..これまでのところよく見えます。しかし、私は見守っています。ありがとう! ;) – Droritos