0

我有 2 个约达约会,如下所示:

org.joda.time.DateTime a;
org.joda.time.DateTime b;

我想要两个日期之间的年、月和日之间的差异(例如 0 年、2 个月、5 天)。
我可以使用org.joda.time.Days.daysBetween(a, b)ormonthsBetween(a, b)yearsBetween(a, b)来分别获取每个值的全部值。由于一个月确实有固定的天数,我该如何计算呢?

例如。如果我得到monthsbetween = 2and daysbetween = 65,我怎么能把它写成"2 months and x days"

有没有其他方法可以得到这个?

4

2 回答 2

1

尝试这个:

Calendar ca = Calendar.getInstance();
ca.setTime(a);
Calendar cb = Calendar.getInstance();
cb.setTime(b);
System.out.printf("%d months and %d days"
    , ca.get(Calendar.MONTH) - cb.get(Calendar.MONTH)
    , ca.get(Calendar.DAY_OF_MONTH) - cb.get(Calendar.DAY_OF_MONTH));
于 2013-07-15T01:50:22.767 回答
0

我对 Joda 不太熟悉,但看起来你最好的选择是将剩下的天数除以 30.5,然后将其四舍五入为一个整数。像这样:

double daysDivided = daysbetween / 30.5;
int daysbetweenFixed = (int) daysDivided;

System.out.printf("%d months and %d days", monthsbetween, daysbetweenFixed);
//optional output ^

我相信你会知道我选择了 30.5,因为这似乎是一个不错的平均月份长度,不包括 2 月。因为没有设定一个月的长度,这是我们仅使用这些整数所能做的最好的事情。

于 2013-07-14T22:29:30.507 回答