前言
在開發中,我們進行資料庫查詢日期類型的時候,往往不是我們想要的時間格式,例如下面的情況:
我資料庫裡面把這些日期相關的欄位都設定為datatime格式了:
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390456813041.png)
資料型別如下:
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390456978579.png)
##實體是這麼配置的:
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390456938807.png)
那麼預設查詢出來的結果就是這樣的:
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390456965116.png)
救命啊,這什麼格式啊,完全不是我想要的年月日時分秒。
其實想解決這種問題也很簡單,無非就是時間格式不對嗎,以下透過全域設定和局部設定兩個面向解決這種問題
解決問題
#1 全域設定(推薦)
一般來說,為了方便和統一,我們可以設定全域處理日期格式化,在設定檔中進行設定
想到application設定檔有properties和yaml兩種格式,我分別為大家準備了不同格式所需的程式碼。
properties格式
# 设置全局的日期格式为年月日时分秒
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
# 世界标准时间,为了方式时差,需要+8小时
spring.jackson.time-zone=GMT+8
登入後複製
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390457061735.png)
yaml格式
當然,上面是properties格式,如果你用的是yaml格式,那麼就可以使用下面的設定:
spring
jackson:
date-format: yyyy-MM-dd HH:mm:ss #设置全局的日期格式为年月日时分秒
time-zone: GMT+8 #世界标准时间,为了方式时差,需要+8小时
登入後複製
加上這個設定項目之後就可以重新啟動服務了,再次存取介面:
可以發現是我們想要的時間格式了,但是查出來的時間比資料庫多了8小時
這就是加上時區引起的,如果加上時區配置項,就是會在原有的時間上8小時,所以說這個時區配置項看個人需求,可以配置也可以不配置
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390457031403.png)
2 局部設定(不推薦)
#雖然全域配置很香,但是有的時候我們不能強制的讓全域保持統一格式,只對個別的進行時間處理
那這個時候,局部設定的作用就體現出來了,為了方便演示,我把全局設定給註解掉:
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390457047735.png)
引入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如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390457018266.png)
重啟項目,測試接口,對比兩個日期格式
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390457194817.png)
當然,跟全域設定一樣,註解裡面的參數也是依照自己的需求靈活選擇的:
例如我這裡不要時區了,並且想要年月日的格式,那就直接改:
![SpringBoot如何實現設定全域和局部時間格式化](https://img.php.cn/upload/article/000/465/014/168390457133607.png)
結果當然是你怎麼配置就是什麼樣的啦:
#
以上是SpringBoot如何實現設定全域和局部時間格式化的詳細內容。更多資訊請關注PHP中文網其他相關文章!