栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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服务代码中更改时区
@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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号