还在为时区问题发愁?获取的时间与中国时间差八小时怎么办?史上最全的解决方案总结

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 还在为时区问题发愁?获取的时间与中国时间差八小时怎么办?史上最全的解决方案总结

正文


1.修改mysql时区


查看时区:

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone |        |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set, 1 warning (0.00 sec)

MySQL 的时区默认与系统时区一致。


配置 MySQL 默认时区


MySQL使用的time_zone属性是UTC时间即:+00:00,而北京时间比UTC时间早8小时,即:UTC+08:00


永久修改

vi /etc/my.cnf

在 [mysqld] 下面添加一行:default-time_zone = '+8:00'

重启 MySQL 生效:systemctl restart mysqld


临时修改

mysql> set time_zone = ‘+8:00’;
mysql> set global time_zone = ‘+8:00’;

优点:立即生效,不用重启 MySQL

缺点:重启 MySQL 后会失效


配置默认时区后

mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set (0.03 sec)
mysql> select @@global.time_zone,@@session.time_zone,@@global.system_time_zone;
+--------------------+---------------------+---------------------------+
| @@global.time_zone | @@session.time_zone | @@global.system_time_zone |
+--------------------+---------------------+---------------------------+
| +08:00             | +08:00              | CST                       |
+--------------------+---------------------+---------------------------+
1 row in set (0.00 sec)


2.修改服务器系统时区


查看服务器时区

cat /etc/timezone  #这里的时区是亚洲上海
Asia/Shanghai

如果你的服务器不是亚洲上海的时区,需要对其进行修改

timedatectl set-timezone "Asia/Shanghai"


3.修改docker容器时区


#根据容器名查询容器ID
containerId=`docker ps -a | grep -w ${project_name}:${tag} | awk '{print $1}'`
#复制服务器系统时区到容器内 容器时区改用服务器系统时区
docker cp /usr/share/zoneinfo/Asia/Shanghai ${containerId}:/etc/localtime


4.在JAVA服务代码中更改时区


/**
 * @Author liuy
 * @Description 服务器时区调整util
 * @Date 2022/4/7 11:02
 * @Version 1.0
 */
@Component
public class TimeZoneUtil {
    @PostConstruct
    void started() {
        TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
    }
}


5.在与数据库连接配置文件中配置上海的时区


url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai


如果单一的方法无效可以结合以上五种方法可使用

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
运维 关系型数据库 MySQL
记一次北美游戏服务器冬令时夏令时切换引发的时间问题
记一次北美游戏服务器冬令时夏令时切换引发的时间问题
将字符串转为时间晚了5天,避坑指南
将字符串转为时间晚了5天,避坑指南
65 1
|
存储 前端开发 数据库
闲谈时间
闲谈时间
71 0
|
存储 开发工具
我花了一个星期,做出了公司的管理系统,只需几个步骤!
我是企业的管理人员,公司发展到现阶段,感觉进入到了瓶颈期,每个员工的工作都已经饱和,很难再挤出时间做其它的事情,需要一款合适的管理软件来协作我们的工作。本来打算买一套管理软件就行了,现实却并没有那么简单。
我花了一个星期,做出了公司的管理系统,只需几个步骤!
|
前端开发
前端工作总结272-时间戳处理
前端工作总结272-时间戳处理
99 0
|
Linux 芯片 开发者
龙蜥社区一周动态 | 2.14-2.20
龙蜥社区「2.14-2.20」一周动态。
龙蜥社区一周动态 | 2.14-2.20
|
Linux 芯片 开发者
龙蜥社区一周动态 | 2.07-2.13
龙蜥社区「2.07-2.13」一周动态来了~
龙蜥社区一周动态 | 2.07-2.13
|
Linux 芯片 开发者
龙蜥社区一周动态 | 12.13-12.17
盆友们好,一起来回顾下社区「12.13-12.17」都有哪些「上新」干货吧。
龙蜥社区一周动态 | 12.13-12.17
|
Linux 芯片 开发者
龙蜥社区一周动态 | 12.06-12.10
一起来看下龙蜥社区「12.06-12.10」都有哪些「上新」干货吧
龙蜥社区一周动态 | 12.06-12.10