您好,登錄后才能下訂單哦!
【SpringBoot】 中時間類型 序列化、反序列化、格式處理
Date
yml全局配置
spring: jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss #配置POST請求Body中Date時間類型序列化格式處理,并返回
請求參數類型轉換
/** * 時間Date轉換 * 配置GET請求,Query查詢Date時間類型參數轉換 */ @Component public class DateConverter implements Converter<String, Date> { @Override public Date convert(String source) { if (StringUtils.isBlank(source)) { return null; } if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) { return parseDate(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}$")) { return parseDate(source.trim(), "yyyy-MM-dd HH:mm:ss"); } throw new IllegalArgumentException("Invalid value '" + source + "'"); } public Date parseDate(String dateStr, String format) { Date date = null; try { date = new SimpleDateFormat(format).parse(dateStr); } catch (ParseException e) { log.warn("轉換{}為日期(pattern={})錯誤!", dateStr, format); } return date; } }
JDK8-時間類型-LocalDateTime、LocalDate、LocalTime
/** * 序列化,反序列化,格式處理 * * @author zc * @date 2020/7/9 01:42 */ @Slf4j @Configuration public class JacksonCustomizerConfig { @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}") private String localDateTimePattern; @Value("${spring.jackson.local-date-format:yyyy-MM-dd}") private String localDatePattern; @Value("${spring.jackson.local-time-format:HH:mm:ss}") private String localTimePattern; @Bean public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return builder -> { builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(localDateTimePattern))); builder.serializerByType(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(localDatePattern))); builder.serializerByType(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(localTimePattern))); builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(localDateTimePattern))); builder.deserializerByType(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(localDatePattern))); builder.deserializerByType(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(localTimePattern))); }; } /** * 時間LocalDateTime轉換 */ @Component public static class LocalDateTimeConverter implements Converter<String, LocalDateTime> { @Override public LocalDateTime convert(String source) { if (StringUtils.isBlank(source)) { return null; } if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) { return LocalDateTime.parse(source, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); } throw new IllegalArgumentException("Invalid value '" + source + "'"); } } /** * 時間LocalDate轉換 */ @Component public static class LocalDateConverter implements Converter<String, LocalDate> { @Override public LocalDate convert(String source) { if (StringUtils.isBlank(source)) { return null; } if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) { return LocalDate.parse(source, DateTimeFormatter.ofPattern("yyyy-MM-dd")); } throw new IllegalArgumentException("Invalid value '" + source + "'"); } } }
趙小胖個人博客:https://zc.happyloves.cn:4443/wordpress/
總結
到此這篇關于SpringBoot中時間類型 序列化、反序列化、格式處理示例代碼的文章就介紹到這了,更多相關SpringBoot中時間類型 序列化、反序列化、格式處理內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。