簡體   English   中英

Joda時間-兩個日期之間“完整”月份的差額

[英]Joda Time - difference in “complete” months between two dates

如何計算兩個日期之間有“喬達”時間的“滿”月數,減去不完整的月數? 例如我有兩個日期

LocalDate from = new LocalDate (2018, 9, 10);
LocalDate to = new LocalDate (2018, 11, 15);

在這些日期之間,有一個“完整”月份-十月從1到31。所以我想通過刪除“不完整”月份-九月和十一月來獲得數字“ 1”

我需要這樣的東西

System.out.println(Months.monthsBetween(from, to).getMonths()); // returns 2
System.out.println(Months.**completed**MonthsBetween(from, to).getMonths()); // returns 1

UPD 1.我可以實現以下目標:

LocalDate from = new LocalDate (2018, 9, 10);
LocalDate to = new LocalDate (2018, 11, 15);

if (to.getDayOfMonth() != 1)
    from = from.plusMonths(1).withDayOfMonth(1);
if (to.getDayOfMonth() != 1)
    to = to.withDayOfMonth(1);

System.out.println(Months.monthsBetween(from, to).getMonths());

但也許有一種現成的方法?

這是否意味着您只是想從每個間隔中刪除一個月並在它們之間進行區別?

    LocalDate fromMinusOne = from.minus(Months.ONE);
    LocalDate toMinusOne = to.minus(Months.ONE);

    System.out.println(Months.monthsBetween(fromMinusOne, toMinusOne).getMonths());

Joda Time提供了提取兩個日期之間的daysmonthsyears方法。 創建兩個日期的實例。

DateTime startDate = DateTime.parse("1970-01-01", DateTimeFormat.forPattern("yyyy-MM-dd"))
DateTime endDate = DateTime.parse("2015-02-25", DateTimeFormat.forPattern("yyyy-MM-dd"))

您也可以在LocalDate中代替DateTime創建日期實例。

現在,您可以輕松找到上述兩個日期之間的完整月份,

int months = Months.monthsBetween(startDate.withDayOfMonth(1), endDate.withDayOfMonth(1)).getMonths()

好幾天,

int days = Days.daysBetween(startDate, endDate).getDays()

兩個月之間的日期差

多年,

int years = Years.yearsBetween(startDate, endDate).getYears();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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