Joda-Time 持续时间,以精确的十进制天数表示

Joda-Time duration in exact decimal days

我正在尝试使用 Joda-Time 的持续时间 class 来计算两天之间的确切天数。这意味着我希望结果是 25.48 天而不是仅仅 25 天。现在我有:

private static final double MILLISECONDS_IN_DAY = 86400000;

DateTime today = new DateTime();
Duration dur = new Duration(foo.getExpirationDate(), today);
double diff_days = dur.getMillis()/MILLISECONDS_IN_DAY;

但我想知道是否有一种方法可以将第一行和最后一行合并为一个双倍的行。

您可以使用 Joda-Time 的常量而不是声明您自己的常量来删除第一行。

org.joda.time.DateTimeConstants.MILLIS_PER_DAY

不要忘记,如果您要计算另一个日期,可能有更好的方法。 Joda-Time 很好地解决了闰年等日历中的不规则问题。