springboot mysql时区设置_java/springboot/mysql时区问题解决方案
解決步驟:
先理清楚邏輯
數(shù)據(jù)從mysql查出-->進(jìn)入docker(沒容器化跳過)-->進(jìn)入相應(yīng)的應(yīng)用程序(比如java或者框架springboot之類的)-->程序處理完輸出返回給前端或者頁面-->展示
第一步:先查mysql
所以先進(jìn)入mysql控制臺,select now(),時(shí)區(qū)沒問題則這里顯示的時(shí)間和當(dāng)前中國時(shí)間一致,或者show variables like '%time_zone%';
image.png
如果時(shí)區(qū)不對可以設(shè)置
set global time_zone = '+8:00';
flush privileges;
不過重啟會失效,想不失效可以改my.cnf然后重啟mysql
第二步:進(jìn)入docker容器看時(shí)區(qū)對不對(如果不是容器化跳過)
先用docker ps 查看容器id,拿到id 進(jìn)去相應(yīng)容器
命令為
docker exec -ti 7a542556a73a /bin/bash
接下來在容器內(nèi)查看當(dāng)前時(shí)間是否和中國時(shí)間一致
date -R
如果不一致需要在Dockerfile時(shí)加上
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
第三步:應(yīng)用程序時(shí)區(qū)
比如java代碼中new出的date查看,如果不是中國時(shí)區(qū),可以在Dockerfile中加上
ENV JAVA_OPTS $JAVA_OPTS -Duser.timezone=GMT+08
如果是框架的時(shí)區(qū)問題,那要查詢對應(yīng)框架的時(shí)區(qū)設(shè)置
比如springboot的時(shí)區(qū)設(shè)置如下
public class SpringBootApplication{
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
SpringApplication.run(SpringBootApplication.class, args);
}
}
除此之外,程序處理完后需要返回前端也有時(shí)區(qū)差異
springboot中需要在application.yml中設(shè)置
spring:
jackson:
time-zone: Asia/Shanghai
第四步:至此后臺時(shí)區(qū)一致,前端展示基本不會有問題,不多敘述
歡迎大家加入Java技術(shù)群
1544106895022.png
作者:詩錯亦染瑾
鏈接:https://www.jianshu.com/p/7f83f6ab58e4
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。
總結(jié)
以上是生活随笔為你收集整理的springboot mysql时区设置_java/springboot/mysql时区问题解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql binary blob区别_
- 下一篇: mysql 数据如何存储,MySQL如何