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