前后端时间格式
1.后端向前端传递
有两种方法,分别是Formatter和 Converter
功能
Spring框架的功能,Formatter和Converter均可以将一种对象类型转换成另一种对象类型。
区别
-
Converter是通用元件,可以在应用程序的任意层中使用。
-
Formatter是专门为Web层设计的。
-
Formatter的原类型必须是String,Converter适用于任意类型。
这里介绍Converter使用,需要继承Converter<String, Date>,在Springboot中通过@Component进行配置注入,不需要额外配置,即拿即用。
- 亲测可用,
- 本人vx:sun632928843,有需要的 可以加下 一起交流学习
代码:
/**
* 全局页面传入日期字符串,自动转换成日期格式
* Component(把普通pojo实例化到spring容器中,相当于配置文件中的
* <bean id="" class=""/>)
*/
@Component
public class DateConverterConfig implements Converter<String, Date> {
private static final List<String> formarts = new ArrayList<>(4);
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 {
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;
try {
DateFormat dateFormat = new SimpleDateFormat(format);
date = dateFormat.parse(dateStr);
} catch (Exception e) {
}
return date;
}
}
2.后端接收前端
只需要在yml文件里加入以下配置即可,自动会将date类型格式转换
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss #设置向前台时间的格式
time-zone: GMT+8