2013-04-03 91 views
0

我需要弄清楚如何計算兩個日期之間有多少天使用喬達時間1.2(不,我不能使用較新的版本)。所以Days課程還不存在。JodaTime版本1.2計算天

我可以爲周,天

(period.getWeeks()*7 + period.getDays()); 

但是,當涉及到幾個月他們都有不同數量的在他們的天,所以我不能做period.getMonths()* 30做到這一點。

編輯: 我還可以做

(today.getDayOfYear() - oldDate.getDayOfYear()); 

但隨後有問題時的日期是在不同年份

感謝

回答

1

看看在約達時間source code。的DaysdaysBetween方法被定義爲:

public static Days daysBetween(ReadableInstant start, ReadableInstant end) { 
    int amount = BaseSingleFieldPeriod.between(start, end, DurationFieldType.days()); 
    return Days.days(amount); 
} 

BaseSingleFieldPeriod,似天,是不是在約達時間1.2可用,但是,看着它的可用source班1.2開始出現:

protected static int between(ReadableInstant start, ReadableInstant end, DurationFieldType field) { 
    if (start == null || end == null) { 
     throw new IllegalArgumentException("ReadableInstant objects must not be null"); 
    } 
    Chronology chrono = DateTimeUtils.getInstantChronology(start); 
    int amount = field.getField(chrono).getDifference(end.getMillis(), start.getMillis()); 
    return amount; 
} 

所有這些類別和方法在Joda Time 1.2中可用,因此兩個實例之間的計算天數將類似於:

public static int daysBetween(ReadableInstant oldDate, ReadableInstant today) { 
    Chronology chrono = DateTimeUtils.getInstantChronology(oldDate); 
    int amount = DurationFieldType.days().getField(chrono).getDifference(today.getMillis(), oldDate.getMillis()); 
    return amount; 
} 
+0

wor K像一個魅力,非常感謝,也解釋如何找到它 – zimZille