JDK1.7 以日期大部分都用的是Date类型进行操作,但是它本身并不是线程安全的,所以我使用的是JDK1.8的新特性LocalDate进行操作。直接上代码。
/**
* 计算2个日期之间相差的 相差多少年月日
* 比如:2011-02-02 到 2017-03-02 相差 6年,1个月,0天
* @param fromDate YYYY-MM-DD
* @param toDate YYYY-MM-DD
* @return 年,月,日 例如 1,1,1
*/
public static String dayComparePrecise(String fromDate, String toDate){
Period period = Period.between(LocalDate.parse(fromDate), LocalDate.parse(toDate));
StringBuffer sb = new StringBuffer();
sb.append(period.getYears()).append(",")
.append(period.getMonths()).append(",")
.append(period.getDays());
return sb.toString();
}
附Date类型转换为LocalDate类型的方法。
public LocalDate dateToLocalDate(Date date) {
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
LocalDate localDate = localDateTime.toLocalDate();
return localDate;
}
本文介绍了一个实用的Java方法,用于精确计算两个日期之间的年、月、日差值,采用JDK1.8的LocalDate类型增强日期处理的线程安全性。同时,提供了将传统Date类型转换为LocalDate的示例代码。

953

被折叠的 条评论
为什么被折叠?



