最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中時(shí)間類型 序列化、反序列化、格式處理示例代碼

 更新時(shí)間:2020年08月27日 08:37:16   作者:趙小胖0914  
這篇文章主要介紹了SpringBoot中時(shí)間類型 序列化、反序列化、格式處理示例代碼,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

【SpringBoot】 中時(shí)間類型 序列化、反序列化、格式處理

Date

yml全局配置

spring: 
 jackson:
 time-zone: GMT+8
 date-format: yyyy-MM-dd HH:mm:ss #配置POST請(qǐng)求Body中Date時(shí)間類型序列化格式處理,并返回

請(qǐng)求參數(shù)類型轉(zhuǎn)換

/**
 * 時(shí)間Date轉(zhuǎn)換
 * 配置GET請(qǐng)求,Query查詢Date時(shí)間類型參數(shù)轉(zhuǎn)換
 */
@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("轉(zhuǎn)換{}為日期(pattern={})錯(cuò)誤!", dateStr, format);
 }
 return date;
 }
}

JDK8-時(shí)間類型-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)));
  };
 }
 
 	/**
  * 時(shí)間LocalDateTime轉(zhuǎn)換
  */
 @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 + "'");
  }
 }

 /**
  * 時(shí)間LocalDate轉(zhuǎn)換
  */
 @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 + "'");
  }
 }
 
}

趙小胖個(gè)人博客:https://zc.happyloves.cn:4443/wordpress/

PS:springboot 時(shí)間類型配置

springboot 自帶了jackson來處理時(shí)間,但不支持jdk8 LocalDate、LocalDateTime的轉(zhuǎn)換。

對(duì)于Calendar、Date二種日期,轉(zhuǎn)換方式有二種:

一、統(tǒng)一application.properties屬性配置文件中加入

spring.jackson.dateFormat=yyyy-MM-dd HH:mm:ss

如果你使用了joda第三包下的時(shí)間類型,

spring.jackson.jodaDateTimeFormat=yyyy-MM-dd HH:mm:ss

此方法為全局格式,沒辦法處理差異化。

二、使用jackson的時(shí)間注解@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")

需要在每個(gè)日期類型上都添加,增加代碼量,但更靈活性。

總結(jié)

到此這篇關(guān)于SpringBoot中時(shí)間類型 序列化、反序列化、格式處理示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot中時(shí)間類型 序列化、反序列化、格式處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在deepin上如何使用Fleet開發(fā)SpringBoot?3.0.0項(xiàng)目

    在deepin上如何使用Fleet開發(fā)SpringBoot?3.0.0項(xiàng)目

    這篇文章主要介紹了在deepin上使用Fleet開發(fā)SpringBoot?3.0.0項(xiàng)目的過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • 通過圖例了解IDEA引入JQuery實(shí)現(xiàn)步驟

    通過圖例了解IDEA引入JQuery實(shí)現(xiàn)步驟

    這篇文章主要介紹了IDEA引入JQuery實(shí)現(xiàn)步驟圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java源碼解析之GenericDeclaration詳解

    Java源碼解析之GenericDeclaration詳解

    這篇文章主要介紹了Java源碼解析之GenericDeclaration詳解。有句古話說得好,源碼能使人快樂!這里分享給大家,供需要的朋友參考。
    2017-10-10
  • springboot+mybatis通過實(shí)體類自動(dòng)生成數(shù)據(jù)庫表的方法

    springboot+mybatis通過實(shí)體類自動(dòng)生成數(shù)據(jù)庫表的方法

    這篇文章主要介紹了springboot+mybatis通過實(shí)體類自動(dòng)生成數(shù)據(jù)庫表的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java中Reactor的反應(yīng)器模式詳解

    Java中Reactor的反應(yīng)器模式詳解

    這篇文章主要介紹了Java中Reactor的反應(yīng)器模式詳解,Reactor反應(yīng)器模式有點(diǎn)兒類似事件驅(qū)動(dòng)模式,當(dāng)有事件觸發(fā)時(shí),事件源會(huì)將事件dispatch分發(fā)到handler處理器進(jìn)行事件處理,反應(yīng)器模式中的反應(yīng)器角色類似于事件驅(qū)動(dòng)模式中的dispatcher事件分發(fā)器角色,需要的朋友可以參考下
    2023-12-12
  • 多個(gè)版本JAVA切換的簡單步驟記錄

    多個(gè)版本JAVA切換的簡單步驟記錄

    在工作中或者學(xué)習(xí)過程中,有一些特殊情況我們需要來切換java版本來做比較,比如一些新特性等等的相關(guān)資料,這篇文章主要介紹了多個(gè)版本JAVA切換的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • Spring如何在一個(gè)事務(wù)中開啟另一個(gè)事務(wù)

    Spring如何在一個(gè)事務(wù)中開啟另一個(gè)事務(wù)

    這篇文章主要介紹了Spring如何在一個(gè)事務(wù)中開啟另一個(gè)事務(wù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • springboot集成mqtt的實(shí)踐開發(fā)

    springboot集成mqtt的實(shí)踐開發(fā)

    本篇文章主要介紹了springboot集成mqtt的實(shí)踐開發(fā),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • spring boot實(shí)現(xiàn)在request里解密參數(shù)返回

    spring boot實(shí)現(xiàn)在request里解密參數(shù)返回

    這篇文章主要介紹了Spring Boot實(shí)現(xiàn)在request里解密參數(shù)返回操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 解決SpringBoot jar包中的文件讀取問題實(shí)現(xiàn)

    解決SpringBoot jar包中的文件讀取問題實(shí)現(xiàn)

    這篇文章主要介紹了解決SpringBoot jar包中的文件讀取問題實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論

屏边| 太湖县| 阳东县| 克什克腾旗| 德保县| 西华县| 巢湖市| 汉源县| 东海县| 阜平县| 大厂| 慈利县| 象山县| 沽源县| 双桥区| 五原县| 缙云县| 双柏县| 宁德市| 大冶市| 额敏县| 邹城市| 清涧县| 舒兰市| 涟水县| 连城县| 上栗县| 东海县| 垣曲县| 汾阳市| 综艺| 清水县| 平谷区| 思南县| 西吉县| 炉霍县| 六安市| 外汇| 龙川县| 钟山县| 绍兴市|