前言
若依框架默认都是使用Date来处理日期和时间,相比之下LocalDate 和 LocalDateTime 具有线程安全、操作方便等优点,在 Java 8 及以后的版本中,建议优先使用它们来处理日期和时间
代码
对象处理
// Excel导入导出时使用
@Excel(name = "日期", dateFormat = "yyyy-MM-dd")
// LocalDate和LocalDateTime序列化和反序列化时使用
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate localDate;
导入时处理
在Common模块中找到ExcelUtil类的importExcel方法,注意有好几个重载的方法,是要有具体功能实现的那个方法
找到如下代码
else if (Date.class == fieldType) {
if (val instanceof String) {
val = DateUtils.parseDate(val);
} else if (val instanceof Double) {
val = DateUtil.getJavaDate((Double) val);
}
}
在这一串代码之后添加下面的代码即可
else if (LocalDate.class == fieldType) {
String dateFormat = field.getAnnotation(Excel.class).dateFormat();
if (StringUtils.isNotEmpty(dateFormat)) {
val = LocalDate.parse(parseDateToStr(dateFormat, val));
} else {
val = Convert.toStr(val);
}
} else if (LocalDateTime.class == fieldType) {
String dateFormat = field.getAnnotation(Excel.class).dateFormat();
if (StringUtils.isNotEmpty(dateFormat)) {
val = LocalDate.parse(parseDateToStr(dateFormat, val));
} else {
val = Convert.toStr(val);
}
}
如有需要生成代码时也支持LocalDate和LocalDateTime的方法请在评论区留言,先下班了。