项目时间和本地时间差8小时的问题

4 篇文章 0 订阅
3 篇文章 0 订阅

问题描述:

项目中的时间和本地时间差了8个小时。这个问题太是常见了,对一个后端来说,这不能说是一个问题了,而是一个失误。但是,服务docker化后,我也被拦了一天,过程如下:

基操

一:设置linux时区

将时区设置为上海 centos 默认时区 UTC

# 查看
date
修改
timedatectl set-timezone Asia/Shanghai

二:查看库存储时间

我用的mysql,如果这里存储时间和系统时间都对不上,那先改这里吧

1:进入mysql 运行命令

# 查看数据库当前时间
SELECT NOW();
#查看时区
show variables like '%zone%';
select @@time_zone;
#修改mysql全局时区为北京时间
set global time_zone = '+8:00';
#修改当前会话时区
set time_zone = '+8:00';
#立即生效
flush privileges;

2:更改配置文件

编辑配置文件vim /etc/my.cnf,找到[mysqld],然后加入default-time-zone = '+8:00’
my.conf

[mysqld]
# set time-zone
default-time-zone = '+8:00'
# does not care about letter case
lower_case_table_names=1

三:jdbc连接更改

 url: jdbc:mysql://localhost:3306/my-blog?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT

重点 :serverTimezone=CTT or serverTimezone=Asia/Shanghai

四: application.yml文件添加

spring:
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss

关于时区:

1:时区简介

地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早。东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便。所以为了克服时间上的混乱,1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。

2:GMT、UTC、CST、DST 时间

  1. UTC:整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated)。
  2. GMT:格林威治标准时间 (Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)
  3. CST:中国标准时间 (China Standard Time) UTC = GMT = CST - 8
  4. DST:夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用。(中国不使用)

服务Docker化后

容器时间同步

mysql容器化后

docker cp /usr/share/zoneinfo/Asia/Shanghai 【容器id】:/etc/localtime

在windows创建一个my.conf 文件内容跟上面一样,然后上传到你的linux上一个文件下,运行:

docker cp /mydata/mysql/my.conf f0d5414ffdd4:/etc/mysql/mysql.conf.d/mysqld.cnf

springboot 项目docker部署后

一样,同步时间的操作。然后:dockerfile文件添加:
ENV TZ=Asia/Shanghai

因为:docker 化 java 项目,dockerfile生成镜像后,关于容器的操作是不生效的。

结束

我就是卡在这 dockerfile中添加的这一行这
如果这个文章里没有帮助到你的,请你一定要留言,咱们记录下来是什么问题,一起去总结。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值