如何在java中计算准确的月份差异和两个日期

时间:2017-09-01 06:39:45

标签: java mysql date

我希望两个日期之间的差异。月份差异计算如

start_date = "2017-08-30";
end_date = "2017-09-01";

月份差异是0

start_date = "2017-06-05";
end_date = "2017-08-20";

月份的差异为2

和 start_date =" 2017-08-15&#34 ;; end_date =" 2017-08-15&#34 ;; diff的月份是1

我正在使用java的日历来处理日期。谷歌之后我无法找到准确的解决方案,任何人都可以帮助我如何计算两个日期之间正确的月差异。

1 个答案:

答案 0 :(得分:2)

使用java 8可以计算2 Temporal个对象之间的差异

LocalDate start = LocalDate.of(2017, 6, 5);
LocalDate end = LocalDate.of(2017, 8, 15);
long delta = ChronoUnit.MONTHS.between(start, end);

System.out.println(delta);

当然你需要从SLQ数据创建那些localDate实例......但这不是大问题

使用Joda(实际上与java8几乎相同):

DateTime start = new DateTime().withDate(2017, 6, 5);
DateTime end = new DateTime().withDate(2017, 8, 15);

System.out.println(Months.monthsBetween(start , end).getMonths());

对于旧的java.util.Date,请参阅重复的问题