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

Springboot中設(shè)置時(shí)間格式問(wèn)題小結(jié)

 更新時(shí)間:2025年04月24日 09:31:37   作者:SYKMI  
本文主要介紹了Springboot中設(shè)置時(shí)間格式問(wèn)題小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1-設(shè)置全局時(shí)間格式

1.Date類型的時(shí)間

對(duì)于老項(xiàng)目來(lái)說(shuō),springboot中許多類使用的是Date類型的時(shí)間,沒(méi)有用到LocalDateTime等JDK8時(shí)間類,那么直接在配置文件中設(shè)置json序列化時(shí)間格式即可

  # 配置文件中配置
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

2.JDK8時(shí)間

如果項(xiàng)目中的時(shí)間采用的是LocalDateTime、LocalDate、LocalTime等JDK8時(shí)間類,Jackson默認(rèn)情況下不支持這些時(shí)間類的序列化,那么我們需要顯式的配置它。

// 方案1
@Configuration
public class JacksonConfig {

    @Bean
    public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();

        // 注冊(cè) JavaTimeModule 以支持 JDK 8 時(shí)間類
        JavaTimeModule javaTimeModule = new JavaTimeModule();

        // 配置日期時(shí)間格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 自定義 LocalDateTime 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));

        // 自定義 LocalDate 序列化器和反序列化器(如果需要)
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

        // 自定義 LocalTime 序列化器和反序列化器(如果需要)
        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        builder.modules(javaTimeModule);

        // 其他全局配置
        builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 禁用時(shí)間戳格式

        return builder;
    }
}
// 方案2
@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();

        // 注冊(cè) JavaTimeModule 以支持 JDK 8 時(shí)間類
        JavaTimeModule javaTimeModule = new JavaTimeModule();

        // 配置日期時(shí)間格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 自定義 LocalDateTime 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));

        // 自定義 LocalDate 序列化器和反序列化器(如果需要)
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

        // 自定義 LocalTime 序列化器和反序列化器(如果需要)
        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        objectMapper.registerModule(javaTimeModule);

        // 其他全局配置
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 禁用時(shí)間戳格式

        return objectMapper;
    }
}

注意?。?!當(dāng)你顯式通過(guò)配置類進(jìn)行配置的時(shí)候,配置文件中對(duì)于Date類型的格式配置以及時(shí)區(qū)通通失效了,這是因?yàn)樽远x的配置會(huì)覆蓋Springboot的自動(dòng)配置,當(dāng)檢測(cè)到你自定義配置時(shí),自動(dòng)配置不會(huì)再生效

3.使Date類和JDK8時(shí)間類統(tǒng)統(tǒng)格式化時(shí)間

如果你的項(xiàng)目比較亂,這些類混合在用,那么你需要在顯式配置的時(shí)候捎帶上Date類如何序列化的規(guī)則,如下

@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();

        // 設(shè)置全局日期格式(影響 java.util.Date)
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

        // 注冊(cè) JavaTimeModule 以支持 JDK 8 時(shí)間類
        JavaTimeModule javaTimeModule = new JavaTimeModule();

        // 配置日期時(shí)間格式
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 自定義 LocalDateTime 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter));
        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter));

        // 自定義 LocalDate 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));

        // 自定義 LocalTime 序列化器和反序列化器
        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));

        objectMapper.registerModule(javaTimeModule);

        // 禁用時(shí)間戳格式(影響 java.util.Date 和 JDK 8 時(shí)間類)
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

        return objectMapper;
    }
}

以上這些配置根據(jù)項(xiàng)目情況選擇合適的序列化/反序列化方案,這些方案適用于json的入?yún)?出參的序列化規(guī)則,也就是說(shuō),當(dāng)你的入?yún)⑹莏son格式時(shí),對(duì)應(yīng)的時(shí)間只要適用于你規(guī)定的格式,那么jackson將會(huì)自動(dòng)處理
當(dāng)你想自定義某個(gè)類中的時(shí)間屬性以特定格式返回的時(shí)候,你可以使用@JsonFormat注解,該注解優(yōu)先級(jí)大于項(xiàng)目全局時(shí)間格式

2-關(guān)于@DateTimeFormat注解

@DateTimeFormat 注解主要用于入?yún)r(shí)格式化日期參數(shù),尤其是在處理表單提交或 URL 請(qǐng)求參數(shù)時(shí)。它不會(huì)影響出參(即返回給客戶端的 JSON 或其他格式響應(yīng))的日期格式,該注解對(duì)Date類和JDK8時(shí)間類都生效

到此這篇關(guān)于Springboot中設(shè)置時(shí)間格式問(wèn)題小結(jié)的文章就介紹到這了,更多相關(guān)Springboot設(shè)置時(shí)間格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MybatisPlus搭建項(xiàng)目環(huán)境及分頁(yè)插件

    MybatisPlus搭建項(xiàng)目環(huán)境及分頁(yè)插件

    Mybatis-Plus(簡(jiǎn)稱MP)是一個(gè)Mybatis的增強(qiáng)工具,在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于MybatisPlus搭建項(xiàng)目環(huán)境及分頁(yè)插件的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Java Spring 聲明式事務(wù)詳解

    Java Spring 聲明式事務(wù)詳解

    這篇文章主要介紹了spring 聲明式事務(wù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 詳解SpringBoot中META-INF的作用與功能

    詳解SpringBoot中META-INF的作用與功能

    SpringBoot開(kāi)發(fā)的應(yīng)用程序中,META-INF目錄扮演著非常重要的角色,本文就來(lái)介紹一下 META-INF的作用及用處,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-07-07
  • Java中的Object類用法總結(jié)

    Java中的Object類用法總結(jié)

    Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它提供了一個(gè)非常強(qiáng)大的類庫(kù),其中一個(gè)基本類是Object類,下面這篇文章主要給大家介紹了Java中Object類用法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • java 面向?qū)ο竺嬖嚰\

    java 面向?qū)ο竺嬖嚰\

    這篇文章主要介紹了java 面向?qū)ο竺嬖嚰\的相關(guān)資料,這里整理了面向?qū)ο蟮幕A(chǔ)知識(shí),幫助大家學(xué)習(xí)理解此部分的知識(shí),需要的朋友可以參考下
    2016-11-11
  • Java中關(guān)于ThreadLocal的隱式引用詳解

    Java中關(guān)于ThreadLocal的隱式引用詳解

    這篇文章主要介紹了Java中關(guān)于ThreadLocal的隱式引用,從線程的角度看,每個(gè)線程都保持一個(gè)對(duì)其線程局部變量副本的隱式引用,只要線程是活動(dòng)的,ThreadLocal實(shí)例就是可訪問(wèn)的,下面我們來(lái)具體看看
    2024-03-03
  • JavaSE中Lambda表達(dá)式的使用與變量捕獲

    JavaSE中Lambda表達(dá)式的使用與變量捕獲

    這篇文章主要介紹了JavaSE中Lambda表達(dá)式的使用與變量捕獲,Lambda表達(dá)式允許你通過(guò)表達(dá)式來(lái)代替功能接口, 就和方法一樣,它提供了一個(gè)正常的參數(shù)列表和一個(gè)使用這些參數(shù)的主體,下面我們來(lái)詳細(xì)看看,需要的朋友可以參考下
    2023-10-10
  • Java并發(fā)編程之Fork/Join框架的理解

    Java并發(fā)編程之Fork/Join框架的理解

    今天帶大家學(xué)習(xí)Java并發(fā)編程的相關(guān)知識(shí),文中對(duì)Fork/Join框架作了非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)有關(guān)知識(shí)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • MyBatis中useGenerateKeys的使用解析

    MyBatis中useGenerateKeys的使用解析

    這篇文章主要介紹了MyBatis中useGenerateKeys的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java實(shí)現(xiàn)AI五子棋游戲的示例代碼

    Java實(shí)現(xiàn)AI五子棋游戲的示例代碼

    本文只是介紹五子棋AI的實(shí)現(xiàn),最終的成品只是一個(gè)?AI?接口,并不包括?GUI,且不依賴?GUI,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下
    2022-09-09

最新評(píng)論

镇远县| 房山区| 修武县| 连江县| 建瓯市| 墨竹工卡县| 奉新县| 婺源县| 明光市| 达州市| 会昌县| 微博| 耒阳市| 大连市| 临夏县| 嫩江县| 大悟县| 柞水县| 黄梅县| 体育| 博湖县| 兰考县| 靖宇县| 丰原市| 运城市| 湖北省| 保定市| 丰原市| 信丰县| 芦山县| 邳州市| 奉节县| 加查县| 福鼎市| 霍城县| 祥云县| 随州市| 浦城县| 蒙山县| 剑川县| 金山区|