繁体   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