SpringBoot中时间类型 序列化、反序列化、格式处理示例代码
【SpringBoot】中时间类型序列化、反序列化、格式处理
Date
yml全局配置
spring: jackson: time-zone:GMT+8 date-format:yyyy-MM-ddHH:mm:ss#配置POST请求Body中Date时间类型序列化格式处理,并返回
请求参数类型转换
/** *时间Date转换 *配置GET请求,Query查询Date时间类型参数转换 */ @Component publicclassDateConverterimplementsConverter{ @Override publicDateconvert(Stringsource){ if(StringUtils.isBlank(source)){ returnnull; } if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){ returnparseDate(source.trim(),"yyyy-MM-dd"); } if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}{1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){ returnparseDate(source.trim(),"yyyy-MM-ddHH:mm:ss"); } thrownewIllegalArgumentException("Invalidvalue'"+source+"'"); } publicDateparseDate(StringdateStr,Stringformat){ Datedate=null; try{ date=newSimpleDateFormat(format).parse(dateStr); }catch(ParseExceptione){ log.warn("转换{}为日期(pattern={})错误!",dateStr,format); } returndate; } }
JDK8-时间类型-LocalDateTime、LocalDate、LocalTime
/** *序列化,反序列化,格式处理 * *@authorzc *@date2020/7/901:42 */ @Slf4j @Configuration publicclassJacksonCustomizerConfig{ @Value("${spring.jackson.date-format:yyyy-MM-ddHH:mm:ss}") privateStringlocalDateTimePattern; @Value("${spring.jackson.local-date-format:yyyy-MM-dd}") privateStringlocalDatePattern; @Value("${spring.jackson.local-time-format:HH:mm:ss}") privateStringlocalTimePattern; @Bean publicJackson2ObjectMapperBuilderCustomizerjackson2ObjectMapperBuilderCustomizer(){ returnbuilder->{ builder.serializerByType(LocalDateTime.class,newLocalDateTimeSerializer(DateTimeFormatter.ofPattern(localDateTimePattern))); builder.serializerByType(LocalDate.class,newLocalDateSerializer(DateTimeFormatter.ofPattern(localDatePattern))); builder.serializerByType(LocalTime.class,newLocalTimeSerializer(DateTimeFormatter.ofPattern(localTimePattern))); builder.deserializerByType(LocalDateTime.class,newLocalDateTimeDeserializer(DateTimeFormatter.ofPattern(localDateTimePattern))); builder.deserializerByType(LocalDate.class,newLocalDateDeserializer(DateTimeFormatter.ofPattern(localDatePattern))); builder.deserializerByType(LocalTime.class,newLocalTimeDeserializer(DateTimeFormatter.ofPattern(localTimePattern))); }; } /** *时间LocalDateTime转换 */ @Component publicstaticclassLocalDateTimeConverterimplementsConverter{ @Override publicLocalDateTimeconvert(Stringsource){ if(StringUtils.isBlank(source)){ returnnull; } if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}{1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){ returnLocalDateTime.parse(source,DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss")); } thrownewIllegalArgumentException("Invalidvalue'"+source+"'"); } } /** *时间LocalDate转换 */ @Component publicstaticclassLocalDateConverterimplementsConverter { @Override publicLocalDateconvert(Stringsource){ if(StringUtils.isBlank(source)){ returnnull; } if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){ returnLocalDate.parse(source,DateTimeFormatter.ofPattern("yyyy-MM-dd")); } thrownewIllegalArgumentException("Invalidvalue'"+source+"'"); } } }
赵小胖个人博客:https://zc.happyloves.cn:4443/wordpress/
PS:springboot时间类型配置
springboot自带了jackson来处理时间,但不支持jdk8LocalDate、LocalDateTime的转换。
对于Calendar、Date二种日期,转换方式有二种:
一、统一application.properties属性配置文件中加入
spring.jackson.dateFormat=yyyy-MM-ddHH:mm:ss
如果你使用了joda第三包下的时间类型,
spring.jackson.jodaDateTimeFormat=yyyy-MM-ddHH:mm:ss
此方法为全局格式,没办法处理差异化。
二、使用jackson的时间注解@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")
需要在每个日期类型上都添加,增加代码量,但更灵活性。
总结
到此这篇关于SpringBoot中时间类型序列化、反序列化、格式处理示例代码的文章就介绍到这了,更多相关SpringBoot中时间类型序列化、反序列化、格式处理内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。