Java Joda时间差,单位为“;“完成”;两个日期之间的月份
如何使用joda time计算两个日期之间的“完整”月数,去掉不完整的月数? 例如,我有两次约会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(
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用户,但如果有现成的方法,我会感到惊讶。数月的方法很多,把它们都放在图书馆里是不合理的。很抱歉,我的回答对你有帮助吗?不,我想放弃第一个月和最后一个月,如果不是从一个月的第一天开始的话,计算剩余的完整月份数