前言
项目为了同一个接口入参的时间做的AOP时间转换
首先了解一下SpringBoot本身自带的功能
-
传入Date转换 ==>使用注解@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”),并配置application.yml
-
返回Response的Date使用注解==>@JsonFormat(pattern=“yyyy-MM-dd HH:mm:ss”),并配置application.yml
jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss
但是老实说,我遇到了不起作用的情况,特别是用swaggerUI测试的时候,我个人比较懒,直接用一个拦截器自动转换日期就好了。。
Github
地址:https://github.com/ithuhui/hui-base-java
分支:master
模块:【hui-base-common】
位置:com.hui.base.common.convert.DateConverter
Ready
- SpringBoot2.x
- IDEA
- maven
Code
日期转换类
- 注意引入:import org.springframework.core.convert.converter.Converter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.convert.converter.Converter;
import org.springframework.util.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* <b><code>DateConverter</code></b>
* <p/>
* Description: 日期转换
* <p/>
* <b>Creation Time:</b> 2018/11/24 12:44.
*
* @author Hu Weihui
*/
@Slf4j
public class DateConverter implements Converter<String,Date> {
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
@Override
public Date convert(String source) {
if(StringUtils.isEmpty(source)) {
return null;
}
try{
source = source.trim();
if (source.contains(":")){
SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
return formatter.parse(source);
}
else if(source.matches("^\\d+$")){
Long time = Long.valueOf(source);
return new Date(time);
}
} catch (ParseException e) {
log.info("[DateConverter] convert date parseException ",e );
}
log.info("[DateConverter] not match timestamp or date ");
return null;
}
}
日期转换拦截器
/**
* <b><code>WebConfig</code></b>
* <p/>
* Description: 拦截器拦截请求后转换日期
* <p/>
* <b>Creation Time:</b> 2018/11/24 12:38.
*
* @author Hu Weihui
*/
@Configuration
@Slf4j
public class WebConfig implements WebMvcConfigurer {
@Autowired
private RequestMappingHandlerAdapter handlerAdapter;
@PostConstruct
public void initEditableAvlidation() {
ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter.getWebBindingInitializer();
if (initializer.getConversionService() != null) {
GenericConversionService genericConversionService = (GenericConversionService) initializer.getConversionService();
genericConversionService.addConverter(new DateConverter());
}
}
}
作者
作者:HuHui
转载:欢迎一起讨论web和大数据问题,转载请注明作者和原文链接,感谢