SpringBoot時區(qū)問題解決以及徹底解決時差問題
第一步:確認docker時區(qū)
①進入容器中
docker exec -it 容器name bash
②查看容器時區(qū):
date

③如果不是CST,則需要修改時區(qū)
方式一、在啟動容器的時候指定正確的時區(qū)。
在啟動的時候多一個參數(shù):-e TZ="Asia/Shanghai"
docker run -e TZ="Asia/Shanghai" -d -p 80:80 --name nginx nginx
方式二、如果是正在運行中的容器。
進入容器
docker exec -it 容器名/容器id bash
修改時區(qū)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
退出
exit
重啟容器
docker restart 容器名/容器id

方式三:直接在容器里面執(zhí)行即可。(博主沒測試過)
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
第二步確認數(shù)據(jù)庫時區(qū)
①查看數(shù)據(jù)庫時區(qū)
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
②修改數(shù)據(jù)庫時區(qū)
如果顯示的是08:00:00則是cst時區(qū)。
如果不是cst時區(qū),則執(zhí)行Sql:
set global time_zone = '+8:00'; ##修改mysql全局時區(qū)為北京時間,即我們所在的東8區(qū) set time_zone = '+8:00'; ##修改當(dāng)前會話時區(qū) flush privileges; #立即生效
第三步確認數(shù)據(jù)庫連接版本是否是6及版本以上
如果是6及以上版本,則數(shù)據(jù)連接需要加上時區(qū)
jdbc:mysql://192.168.1.54:3306/......&serverTimezone=Asia/Shanghai
第四步:確認SpringBoot的時區(qū)
如果不是cst時區(qū),則在啟動文件中加上:
@SpringBootApplication
public class ApplyPartyApplication {
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
SpringApplication.run(ApplyPartyApplication.class, args);
}
}第五步:確認json化輸出前端的時區(qū)
此時數(shù)據(jù)庫時區(qū)、容器時區(qū)、springboot時區(qū)都是CST,輸出的時間還是可能差8小時,這因為Date進行json的時候還存一個時區(qū),而springboot默認json工具是jackson,采用的是UTC時區(qū)。需要一下配置。注意:如果項目WebMvcConfig采用的是繼承WebMvcConfigurationSupport,而不是實現(xiàn)WebMvcConfigurer接口的話,下面的配置會不生效。
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
總結(jié)
到此這篇關(guān)于SpringBoot時區(qū)問題解決以及徹底解決時差問題的文章就介紹到這了,更多相關(guān)SpringBoot時區(qū)問題解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 深入詳解SpringBoot中時區(qū)問題解決與配置方案
- springboot項目如何設(shè)置時區(qū)
- 如何解決springboot數(shù)據(jù)庫查詢時出現(xiàn)的時區(qū)差異問題
- SpringBoot如何根據(jù)用戶系統(tǒng)時區(qū)動態(tài)展示時間
- springboot如何統(tǒng)一設(shè)置時區(qū)
- SpringBoot中?Jackson?日期的時區(qū)和日期格式問題解決
- SpringBoot:JPA + AuditingEntityListener時區(qū)設(shè)置方式
- 關(guān)于SpringBoot mysql數(shù)據(jù)庫時區(qū)問題
- SpringBoot時區(qū)設(shè)置的幾個方面小結(jié)
相關(guān)文章
Spring Data JPA調(diào)用存儲過程實例代碼
本篇文章主要介紹了Spring Data JPA調(diào)用存儲過程實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04
MultipartResolver實現(xiàn)文件上傳功能
這篇文章主要為大家詳細介紹了MultipartResolver實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
Java中-Xms和-Xmx參數(shù)的使用與默認內(nèi)存設(shè)置
在 Java 程序運行時,內(nèi)存的管理是影響程序性能的關(guān)鍵因素之一,Java 程序使用的內(nèi)存主要由兩部分組成:堆內(nèi)存和棧內(nèi)存,Java 提供了多個參數(shù)來控制堆內(nèi)存的大小,其中最常用的參數(shù)是 -Xms 和 -Xmx,本文將詳細介紹這些參數(shù),需要的朋友可以參考下2024-11-11
Windows同時配置兩個jdk環(huán)境變量的操作步驟
Java Development Kit (JDK) 是開發(fā)Java應(yīng)用程序的基礎(chǔ),包含了編譯器、調(diào)試器以及其他必要的工具,本指南將一步步指導(dǎo)您完成在Windows操作系統(tǒng)上同時配置兩個jdk環(huán)境變量的操作步驟,需要的朋友可以參考下2024-09-09
SpringBoot與其他框架集成時的版本沖突問題排查與解決全流程
解決 Spring Boot 與其他框架集成的版本沖突,核心思路是利用 Spring Boot 的版本仲裁機制鎖定依賴版本,顯式控制沖突依賴,排查沖突根源,以下是具體步驟、方法和實戰(zhàn)案例,覆蓋從預(yù)防到排查再到解決的全流程,需要的朋友可以參考下2025-11-11

