Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Joda时间差,单位为“;“完成”;两个日期之间的月份_Java_Jodatime - Fatal编程技术网

Java Joda时间差,单位为“;“完成”;两个日期之间的月份

Java Joda时间差,单位为“;“完成”;两个日期之间的月份,java,jodatime,Java,Jodatime,如何使用joda time计算两个日期之间的“完整”月数,去掉不完整的月数? 例如,我有两次约会 LocalDate from = new LocalDate (2018, 9, 10); LocalDate to = new LocalDate (2018, 11, 15); 在这两个日期之间有一个“完整”月——10月1日至31日。 所以我想去掉“不完整的”月份,得到数字“1”——9月和11月 我需要这样的东西 System.out.println(Months.monthsBetween(

如何使用joda time计算两个日期之间的“完整”月数,去掉不完整的月数? 例如,我有两次约会

LocalDate from = new LocalDate (2018, 9, 10);
LocalDate to = new LocalDate (2018, 11, 15);
在这两个日期之间有一个“完整”月——10月1日至31日。 所以我想去掉“不完整的”月份,得到数字“1”——9月和11月

我需要这样的东西

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
提供了提取两个日期之间的
的方法。创建两个日期的实例

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();

因此,您希望下个月的开始时间在
from
to
日期之后。我强烈建议您使用内置于Java 8并可用于Java 6的JSR 310库。您将获得更好的支持,因为它在很大程度上取代了jodatimeI。我不是Joda Time用户,但如果有现成的方法,我会感到惊讶。数月的方法很多,把它们都放在图书馆里是不合理的。很抱歉,我的回答对你有帮助吗?不,我想放弃第一个月和最后一个月,如果不是从一个月的第一天开始的话,计算剩余的完整月份数