用Java8新特性解决要计算两个日期时间相差年月日等
// 获取到日期
Instant graduationInstant = Instant.ofEpochMilli(Long.parseLong(userInfo.getGraduationTime()));
// 获取当前日期
Instant currentInstant = Instant.ofEpochMilli(System.currentTimeMillis());
LocalDate graduationDate = graduationInstant.atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate currentDate = currentInstant.atZone(ZoneId.systemDefault()).toLocalDate();
// 计算毕业时间到当前时间的年数差
Period period = Period.between(graduationDate, currentDate);
int years = period.getYears();
// getMonths 月
// getDays 天
-
首先,通过
Instant.ofEpochMilli(Long.parseLong(userInfo.getGraduationTime()))
获取到用户的毕业时间,这是一个Unix时间戳,表示从1970年1月1日0点开始到现在的毫秒数。 -
然后,通过
Instant.ofEpochMilli(System.currentTimeMillis())
获取当前的Unix时间戳,也表示从1970年1月1日0点开始到现在的毫秒数。 -
接着,通过
atZone(ZoneId.systemDefault()).toLocalDate()
将这两个时间戳转换为Java的LocalDate对象,表示具体的日期。 -
最后,通过
Period.between(graduationDate, currentDate)
计算两个日期之间的差值,返回一个Period对象,然后通过getYears()
方法获取这个差值的年份部分,即用户从毕业到现在过了多少年。