[英]Period between dates using Java/Joda
我有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)
來分別獲取每個值的全部值。 由於一個月確實有固定的天數,該如何計算?
例如。 如果我得到daysbetween = 65
monthsbetween = 2
和monthsbetween = 2
daysbetween = 65
和daysbetween = 65
,如何將其寫為"2 months and x days"
還有其他方法可以做到這一點嗎?
嘗試這個:
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));
我對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月。 因為沒有設定一個月的長度,所以這是我們只能使用這些整數的最佳方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.