这个问题建议采用Java8的时间api来计算比较简单直接
由于是计算时间之间的间距,只有年月,没有涉及到时分秒,在Java8中的时间api已经抽象了这样的类-Period,它代表时间之间的年月日的间距,里面主要属性就三个,年月日
当然获得一个Period实例也就是要计算两个时间的间距,可以采用静态构造方法
Period.between(LocalDate startDateInclusive, LocalDate endDateExclusive)
这里面的两个参数就代表开始时间,结束时间,LocalDate是Java8里的表示年月日,也只表示年月日的类,由于楼主给的条件也只有年和月,为了更方便的去计算,我们就默认日为1,因此完整代码如下
Period between = Period.between(LocalDate.parse("2012-03-01"), LocalDate.parse("2018-08-01"));
System.out.println(String.format("%d年%d月", between.getYears(), between.getMonths()));
运行结果如下:
Java8的时间Api对于时间的处理非常方便易用,以后遇到类似问题,不妨去Java8里时间Api里去看看