3

本当にふと疑問に思ったのですが、すばらしい JodaTime ライブラリの DateTime クラスには、

minus(long millis)

このメソッドは、指定されたミリ秒数を引いた新しい DateTime オブジェクトを返します。

minusMillis(int millis)

同じことを行いますが、ミリ秒の整数値を使用するメソッドはどれですか? Integer.MAX_VALUEミリ秒単位はわずか 24 日で、これはあまり役に立ちません。おそらく、intを aに変換し、longとにかく他の方法に送り込むだけでしょうか?

JodaTime ライブラリは非常によく書かれているので、私が抜けているのにはおそらく理由があると思います。

http://joda-time.sourceforge.net/api-release/org/joda/time/DateTime.html#minusMillis(int )

編集:明確にするために、なぜメソッドを使用する必要があるのか​​ 疑問に思っていますminusMillis(int)-より強力なメソッドの目的を理解していminus(long)ます。

4

3 に答える 3

3

バージョン1.0ではminus(long duration)メソッドしかありませんでしたが、バージョン1.1では一貫性を保つために追加され、minusXxxx(int units)下位互換性のために削除されなかったためだと思います。minusMillis(int)minus(long)

ところで:同じ理由があると思いますplus(long duration)plusMillis(int millis)

于 2012-10-11T10:18:42.617 に答える
3

メソッドminusMillis(int millis)は、最大Integer.Maxミリ秒を減算できます。これは、日数に変換すると(2 ^ 31 -1)は約24。8日です。

したがって、date1-(日数)のように2つの日付オブジェクトを減算する場合(日数は> 29)、minusMillis(intミリ秒)を使用して減算することはできません。したがって、この方法は

DateTimeマイナス(長い期間)

供給される。

于 2012-10-11T10:20:11.507 に答える
1

次に、のソースをDateTime調べると、両方のメソッドが最終的に を呼び出すことがわかりますDateTime.withMillis(long newMillis)。基本的に、ミリ秒を目的の形式に変換する以外に何もしないDateTime.minus(long duration)呼び出し。DateTime.withDurationAdded(long durationToAdd, int scalar)DateTime.withMillis(long newMillis)

したがってminus(long duration)、互換性の理由だけで存在すると思います。

于 2012-10-11T10:22:31.503 に答える