在我正在观看的一个教程中,我试图计算两个日期之间的差异。我需要initMonth和finishMonth,其想法是从finishMonths中减去initMonth并计算差值。
我可以使用Calendar类(然后使用finishMonth做类似的事情(:
int initMonth = calendar.get(Calendar.MONTH);
但问题是,如果initMonth是May(例如(,endMonth是January;当我从initMonth中减去endMonth时,我会得到1-5=-4——我会有一个负差。为了解决这个问题,老师提出了将YEAR*12相乘,然后将月份相加的解决方案,如下所示:
int initMonth = calendar.get(Calendar.YEAR) *12 + calendar.get(Calendar.MONTH);
然而,这对我来说没有任何意义,因为今年将有一个非常大的数字,比如2021年*12个多月。我的猜测是他指的是月,所以我们会得到一年中的月加上这个月。我说得对吗?我不确定,想确认一下这个逻辑。
提前谢谢。
您的教程已经过时好几年了。切勿使用Calendar
或Date
类。仅使用java.time类。
显然,你想计算经过的月份。
LocalDate then = LocalDate.of( 2020 , Month.MARCH ) ;
LocalDate today = LocalDate.now() ;
Period elapsed = Period.between ( then , today ) ;
int months = elapsed.toMonths() ;
搜索堆栈溢出以了解更多信息。这已经被报道了很多次了。