首頁 >Java >java教程 >SpringBoot如何實現設定全域和局部時間格式化

SpringBoot如何實現設定全域和局部時間格式化

王林
王林轉載
2023-05-12 23:16:041353瀏覽

前言

在開發中,我們進行資料庫查詢日期類型的時候,往往不是我們想要的時間格式,例如下面的情況:

我資料庫裡面把這些日期相關的欄位都設定為datatime格式了:

SpringBoot如何實現設定全域和局部時間格式化

資料型別如下:

SpringBoot如何實現設定全域和局部時間格式化

##實體是這麼配置的:

SpringBoot如何實現設定全域和局部時間格式化

那麼預設查詢出來的結果就是這樣的:

SpringBoot如何實現設定全域和局部時間格式化

救命啊,這什麼格式啊,完全不是我想要的年月日時分秒。

其實想解決這種問題也很簡單,無非就是時間格式不對嗎,以下透過全域設定和局部設定兩個面向解決這種問題

解決問題

#1 全域設定(推薦)

一般來說,為了方便和統一,我們可以設定全域處理日期格式化,在設定檔中進行設定

想到application設定檔有properties和yaml兩種格式,我分別為大家準備了不同格式所需的程式碼。

properties格式

# 设置全局的日期格式为年月日时分秒
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
# 世界标准时间,为了方式时差,需要+8小时
spring.jackson.time-zone=GMT+8

SpringBoot如何實現設定全域和局部時間格式化

yaml格式

當然,上面是properties格式,如果你用的是yaml格式,那麼就可以使用下面的設定:

spring 
  jackson: 
    date-format: yyyy-MM-dd HH:mm:ss #设置全局的日期格式为年月日时分秒
    time-zone: GMT+8 #世界标准时间,为了方式时差,需要+8小时

加上這個設定項目之後就可以重新啟動服務了,再次存取介面:

可以發現是我們想要的時間格式了,但是查出來的時間比資料庫多了8小時

這就是加上時區引起的,如果加上時區配置項,就是會在原有的時間上8小時,所以說這個時區配置項看個人需求,可以配置也可以不配置

SpringBoot如何實現設定全域和局部時間格式化

2 局部設定(不推薦)

#雖然全域配置很香,但是有的時候我們不能強制的讓全域保持統一格式,只對個別的進行時間處理

那這個時候,局部設定的作用就體現出來了,為了方便演示,我把全局設定給註解掉:

SpringBoot如何實現設定全域和局部時間格式化

引入pom

局部設定需要使用fastjson依賴,所以需要下下載依賴

 <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>

加入註解

在需要進行時間格式化的欄位上加入註解:

 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

它有兩個參數:

1:pattern:時間格式

2:timezone:時區

原理和全域設定的兩個參數是一樣的

這裡我估計拿出一個加了註解,一個沒加註解的時間屬性進行比較:

SpringBoot如何實現設定全域和局部時間格式化

重啟項目,測試接口,對比兩個日期格式

SpringBoot如何實現設定全域和局部時間格式化

當然,跟全域設定一樣,註解裡面的參數也是依照自己的需求靈活選擇的:

例如我這裡不要時區了,並且想要年月日的格式,那就直接改:

SpringBoot如何實現設定全域和局部時間格式化

結果當然是你怎麼配置就是什麼樣的啦:

SpringBoot如何實現設定全域和局部時間格式化#

以上是SpringBoot如何實現設定全域和局部時間格式化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除