指定された許容誤差を持つ2つのオブジェクトJodaTime
を比較するための標準APIはありますか?できれば標準のAPIDateTime
を使用してワンライナーを探しています。この投稿Joda
のような時間的表現ではありません。
理想的には、次のようになります。
boolean areNearlyEqual = SomeJodaAPIClass.equal(dt1, dt2, maxTolerance);
ありがとう!
これを使って:
new Duration(dt1, dt2).isShorterThan(Duration.millis(maxTolerance))
この投稿は古いですが、受け入れられたソリューションの行が少し長いことがわかりました。存在するものにこれ以上のものはありませんでした。だから私は Date と DateTime のためにそれをラップする小さなクラスを作りました:
public class DateTimeUtils
{
public static boolean dateIsCloseToNow(Date dateToCheck,
Duration tolerance)
{
return dateIsCloseToNow(new DateTime(dateToCheck), tolerance);
}
public static boolean dateIsCloseToNow(DateTime dateToCheck,
Duration tolerance)
{
return datesAreClose(dateToCheck, DateTime.now(), tolerance);
}
public static boolean datesAreClose(Date date1,
Date date2,
Duration tolerance)
{
return datesAreClose(new DateTime(date1), new DateTime(date2), tolerance);
}
public static boolean datesAreClose(DateTime date1,
DateTime date2,
Duration tolerance)
{
if (date1.isBefore(date2)) {
return new Duration(date1, date2).isShorterThan(tolerance);
}
return new Duration(date2, date1).isShorterThan(tolerance);
}
だからこの行:
new Duration(date.getTime(), System.currentTimeMillis()).isShorterThan(Duration.standardSeconds(5)
になります:
DateUtils.dateIsCloseToNow(date, Duration.standardSeconds(5))
作成日を検証する必要がある単体テスト ケースでは、これが非常に役立つことがわかりました。