1、
/**
* 全局统一日期转换处理 处理时间实体类为date 类型 前端传字符时间类型 json 格式 字符串时间格式不会被处理
*/
@Component
public class CustomDate implements Converter<String, Date> {
private static final List<String> formarts = new ArrayList<>();
static {
formarts.add("yyyy-MM");
formarts.add("yyyy-MM-dd");
formarts.add("yyyy-MM-dd HH:mm");
formarts.add("yyyy-MM-dd HH:mm:ss");
}
@Override
public Date convert(String source) {
String value = source.trim();
if ("".equals(value)) {
return null;
}
if (source.matches("^\\d{4}-\\d{1,2}$")) {
return parseDate(source, formarts.get(0));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
return parseDate(source, formarts.get(1));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
return parseDate(source, formarts.get(2));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
return parseDate(source, formarts.get(3));
} else if (source.length() == 13) {//long 时间戳转换
return parseDate(source, formarts.get(3));
} else {
throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
}
}
/**
* 格式化日期
*
* @param dateStr String 字符型日期
* @param format String 格式
* @return Date 日期
*/
public Date parseDate(String dateStr, String format) {
Date date = null;
//long 时间戳转换
if (dateStr != null && dateStr.length() == 13) {
long time = Long.parseLong(dateStr);
date = new Date(time);
}
try {
DateFormat dateFormat = new SimpleDateFormat(format);
date = dateFormat.parse(dateStr);
} catch (Exception e) {
}
return date;
}
}
2、如果继承了WebMvcConfigurationSupport需要注入
//接收页面参数使用DateConverter自动转化
@Override
protected void addFormatters(FormatterRegistry registry) {
registry.addConverter(new CustomDate());
}
3、mybatis 判断日期非空 不可判断!='' 判断 !=null 即可
<if test="params.startTime!=null and params.endTime!=null">
and DATE_FORMAT(a.create_time,"%Y-%m-%d") between #{params.startTime} and #{params.endTime}
</if>
springboot 全局处理前端字符串时间后端实体Date类型
最新推荐文章于 2023-07-13 13:50:47 发布