使用Java / Joda的日期之间的时间段

时间:2013-07-14 22:13:32

标签: java date jodatime

我有2个joda日期如下:

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

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

EG。如果我获得monthsbetween = 2daysbetween = 65,我该如何将其写为"2 months and x days"

还有其他方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分: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));

答案 1 :(得分: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,因为它似乎是一个很好的平均月份长度,不包括二月份。因为没有一个月的设定长度,这是我们只能用这些整数做的最好的。