簡體   English   中英

使用Java / Joda的日期之間的時間段

[英]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 = 2monthsbetween = 2 daysbetween = 65daysbetween = 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM