如何比较两个Joda时间段

Per*_*ium 17 java jodatime

它似乎并不直截了当.

我在尝试这个:

@Override
public int compare(Period o1, Period o2) {
    return o1.toStandardDays().getDays() > o2.toStandardDays().getDays() ? -1 : (o1.toStandardDays().getDays() == o2.toStandardDays().getDays() ? 0 : 1);
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:

java.lang.UnsupportedOperationException: Cannot convert to Days as this period contains months and months vary in length
    at org.joda.time.Period.checkYearsAndMonths(Period.java:1455)
    at org.joda.time.Period.toStandardDays(Period.java:1314)

我希望Peroid有一种isLongerThan(Period p)方法.

Mat*_*all 13

来自Joda文档:

要比较两个句点的实际持续时间,请将两者都转换为持续时间toDuration,这一操作强调结果可能会根据您选择的日期而有所不同.

这两种toDuration方法是BasePeriod#toDurationTo(ReadableInstant)BasePeriod#toDurationFrom(ReadableInstant).这意味着您必须选择此期间的开始或结束时刻才能计算其持续时间.

如果这对您来说是个问题,那么您可能希望直接使用Duration而不是Period.

  • @Benj感谢编辑,但术语[JavaDoc](http://en.wikipedia.org/wiki/Javadoc)被广泛用于指代文档生成器系统和/或其输出.许多项目和库提供了JavaDoc页面的链接,这些页面是通过运行JavaDoc工具生成的.我不认为大多数人都会发现"JavaDoc"是否引用Java SE的API文档会让人感到困惑或不清楚. (3认同)