SpringBoot時(shí)區(qū)問題解決以及徹底解決時(shí)差問題
第一步:確認(rèn)docker時(shí)區(qū)
①進(jìn)入容器中
docker exec -it 容器name bash
②查看容器時(shí)區(qū):
date
③如果不是CST,則需要修改時(shí)區(qū)
方式一、在啟動(dòng)容器的時(shí)候指定正確的時(shí)區(qū)。
在啟動(dòng)的時(shí)候多一個(gè)參數(shù):-e TZ="Asia/Shanghai"
docker run -e TZ="Asia/Shanghai" -d -p 80:80 --name nginx nginx
方式二、如果是正在運(yùn)行中的容器。
進(jìn)入容器
docker exec -it 容器名/容器id bash
修改時(shí)區(qū)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
退出
exit
重啟容器
docker restart 容器名/容器id
方式三:直接在容器里面執(zhí)行即可。(博主沒測(cè)試過)
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
第二步確認(rèn)數(shù)據(jù)庫(kù)時(shí)區(qū)
①查看數(shù)據(jù)庫(kù)時(shí)區(qū)
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
②修改數(shù)據(jù)庫(kù)時(shí)區(qū)
如果顯示的是08:00:00則是cst時(shí)區(qū)。
如果不是cst時(shí)區(qū),則執(zhí)行Sql:
set global time_zone = '+8:00'; ##修改mysql全局時(shí)區(qū)為北京時(shí)間,即我們所在的東8區(qū) set time_zone = '+8:00'; ##修改當(dāng)前會(huì)話時(shí)區(qū) flush privileges; #立即生效
第三步確認(rèn)數(shù)據(jù)庫(kù)連接版本是否是6及版本以上
如果是6及以上版本,則數(shù)據(jù)連接需要加上時(shí)區(qū)
jdbc:mysql://192.168.1.54:3306/......&serverTimezone=Asia/Shanghai
第四步:確認(rèn)SpringBoot的時(shí)區(qū)
如果不是cst時(shí)區(qū),則在啟動(dòng)文件中加上:
@SpringBootApplication public class ApplyPartyApplication { public static void main(String[] args) { TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); SpringApplication.run(ApplyPartyApplication.class, args); } }
第五步:確認(rèn)json化輸出前端的時(shí)區(qū)
此時(shí)數(shù)據(jù)庫(kù)時(shí)區(qū)、容器時(shí)區(qū)、springboot時(shí)區(qū)都是CST,輸出的時(shí)間還是可能差8小時(shí),這因?yàn)镈ate進(jìn)行json的時(shí)候還存一個(gè)時(shí)區(qū),而springboot默認(rèn)json工具是jackson,采用的是UTC時(shí)區(qū)。需要一下配置。注意:如果項(xiàng)目WebMvcConfig采用的是繼承WebMvcConfigurationSupport,而不是實(shí)現(xiàn)WebMvcConfigurer接口的話,下面的配置會(huì)不生效。
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時(shí)區(qū)問題解決以及徹底解決時(shí)差問題的文章就介紹到這了,更多相關(guān)SpringBoot時(shí)區(qū)問題解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
聊聊ResourceBundle和properties讀取配置文件的區(qū)別
這篇文章主要介紹了ResourceBundle和properties讀取配置文件的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07SpringBoot定制三種錯(cuò)誤頁面及錯(cuò)誤數(shù)據(jù)方法示例
Spring Boot提供的默認(rèn)異常處理機(jī)制通常并不一定適合我們實(shí)際的業(yè)務(wù)場(chǎng)景,因此,我們通常會(huì)根據(jù)自身的需要對(duì)Spring Boot全局異常進(jìn)行統(tǒng)一定制,例如定制錯(cuò)誤頁面,定制錯(cuò)誤數(shù)據(jù)等。本文主要介紹了SpringBoot三種自定義錯(cuò)誤頁面的實(shí)現(xiàn),快來學(xué)習(xí)吧2021-12-12十五道tomcat面試題,為數(shù)不多的機(jī)會(huì)!
這篇文章主要介紹了十五道tomcat面試題,Tomcat的本質(zhì)是一個(gè)Servlet容器。一個(gè)Servlet能做的事情是:處理請(qǐng)求資源,并為客戶端填充response對(duì)象,需要的朋友可以參考下2021-08-08BeanUtils.copyProperties()參數(shù)的賦值順序說明
這篇文章主要介紹了BeanUtils.copyProperties()參數(shù)的賦值順序說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Spring Boot學(xué)習(xí)入門之AOP處理請(qǐng)求詳解
AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù),下面這篇文章主要給大家介紹了關(guān)于Spring Boot學(xué)習(xí)入門之AOP處理請(qǐng)求的相關(guān)資料,需要的朋友可以參考下。2017-09-09springboot統(tǒng)一返回json數(shù)據(jù)格式并配置系統(tǒng)異常攔截方式
這篇文章主要介紹了springboot統(tǒng)一返回json數(shù)據(jù)格式并配置系統(tǒng)異常攔截方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08如何解決@PutMapping或@PostMapping接收String類型參數(shù)多兩個(gè)“引號(hào)問題
這篇文章主要介紹了如何解決@PutMapping或@PostMapping接收String類型參數(shù)多兩個(gè)“引號(hào)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08學(xué)習(xí)Java模擬實(shí)現(xiàn)百度文檔在線瀏覽
這片文章介紹了如何使用Java模擬實(shí)現(xiàn)百度文檔在線瀏覽,文章思路清晰,需要的朋友可以參考下2015-07-07