我有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 = 2
和daysbetween = 65
,我该如何将其写为"2 months and x days"
还有其他方法可以解决这个问题吗?
答案 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,因为它似乎是一个很好的平均月份长度,不包括二月份。因为没有一个月的设定长度,这是我们只能用这些整数做的最好的。