springboot mysql时区设置_java/springboot/mysql时区问题解决方案
解決步驟:
先理清楚邏輯
數(shù)據(jù)從mysql查出-->進入docker(沒容器化跳過)-->進入相應(yīng)的應(yīng)用程序(比如java或者框架springboot之類的)-->程序處理完輸出返回給前端或者頁面-->展示
第一步:先查mysql
所以先進入mysql控制臺,select now(),時區(qū)沒問題則這里顯示的時間和當前中國時間一致,或者show variables like '%time_zone%';
image.png
如果時區(qū)不對可以設(shè)置
set global time_zone = '+8:00';
flush privileges;
不過重啟會失效,想不失效可以改my.cnf然后重啟mysql
第二步:進入docker容器看時區(qū)對不對(如果不是容器化跳過)
先用docker ps 查看容器id,拿到id 進去相應(yīng)容器
命令為
docker exec -ti 7a542556a73a /bin/bash
接下來在容器內(nèi)查看當前時間是否和中國時間一致
date -R
如果不一致需要在Dockerfile時加上
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
第三步:應(yīng)用程序時區(qū)
比如java代碼中new出的date查看,如果不是中國時區(qū),可以在Dockerfile中加上
ENV JAVA_OPTS $JAVA_OPTS -Duser.timezone=GMT+08
如果是框架的時區(qū)問題,那要查詢對應(yīng)框架的時區(qū)設(shè)置
比如springboot的時區(qū)設(shè)置如下
public class SpringBootApplication{
public static void main(String[] args) {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
SpringApplication.run(SpringBootApplication.class, args);
}
}
除此之外,程序處理完后需要返回前端也有時區(qū)差異
springboot中需要在application.yml中設(shè)置
spring:
jackson:
time-zone: Asia/Shanghai
第四步:至此后臺時區(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如何