數據從mysql查出-->進入docker(沒容器化跳過)-->進入相應的應用程序(好比java或者框架springboot之類的)-->程序處理完輸出返回給前端或者頁面-->展現前端
因此先進入mysql控制檯,select now(),時區沒問題則這裏顯示的時間和當前中國時間一致,或者show variables like '%time_zone%';java
image.pngmysql
若是時區不對能夠設置spring
set global time_zone = '+8:00'; flush privileges;
不太重啓會失效,想不失效能夠改my.cnf而後重啓mysqlsql
先用docker ps 查看容器id,拿到id 進去相應容器
命令爲docker
docker exec -ti 7a542556a73a /bin/bash
接下來在容器內查看當前時間是否和中國時間一致springboot
date -R
若是不一致須要在Dockerfile時加上bash
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
好比java代碼中new出的date查看,若是不是中國時區,能夠在Dockerfile中加上app
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 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。