美文网首页
SpringBoot多时区

SpringBoot多时区

作者: 学编程的小屁孩 | 来源:发表于2022-01-04 09:36 被阅读0次

问题说明
JAVA进程在运行过程中发现和当前时间相差8小时,检查服务器时间和互联网的北京时间一致,由此推测操作系统时区不对,经过查看操作系统时区,发现时区正确,通过jinfo命令查看Java进程发现时区不是东八区,由此找到原因,在此把排查过程做简要记录,便于后续遇到问题快速解决。

中国跨越了东五区、东六区、东七区、东八区、东九区五个时区,一般都统一采用东八区计时时间。

查看操作系统当前时间

[root@swk-204 ~]# date

Fri Jan 25 19:28:28 CST 2019

[root@swk-204 ~]# date "+%Y-%m-%d %H:%M:%S"

2019-01-25 19:28:36
[root@swk-204 ~]#
查看操作系统当前时区
方式一

[root@swk-204 ~]# date -R

Fri, 25 Jan 2019 19:04:13 +0800
-0800表示西八区,是美国旧金山所在的时区,+0800表示东八区,是中国上海所在的时区

方式二

[root@swk-204 ~]# date "+%Z"

CST
方式三

[root@swk-204 ~]# date

Fri Jan 25 19:05:43 CST 2019
方式四

[root@engine ~]# cat /etc/localtime 

CST-8
时区为CST-8

通过grep关键字进行过滤

[root@engine bin]# jinfo 1728 |grep user.timezone

user.timezone = GMT
时区为GMT

JAVA进程调整时区
修改Java虚拟机时间
JAVA启动参数

-Duser.timezone=GMT+8

每个java程序启动的时候加参数

1.启动文件中的TimeZone设置:

public static void main(String[] args) {
        TimeZone timeZone = TimeZone.getTimeZone("UTC");
        TimeZone.setDefault(timeZone);
        SpringApplication.run(MatrixApplication.class, args);
    }

只对运行的console日志的时间影响。
2.数据连接字符串

jdbc:mysql://localhost:3306/gmall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

对与读取到的时间会自动减去+8小时插入到数据库(如果数据库设置的utc+8的北京时间的),查询的时候

3.springboot 接口时间字段返回配置

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

对springboot rest接口时间字段生效。

时间格式化时区设置
如果没有设置会使用程序运行系统的默认的时区。

SimpleDateFormat dd=new SimpleDateFormat("yyyy/MM/dd");
        log.info(TimeZone.getDefault().toString()); // 系统默认时区
        log.info(dd.getTimeZone().toString());//SimpleDateFormat 使用的时区
        log.info(dd.parse(dstr1).toString());
        //dd.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        dd.setTimeZone((TimeZone.getTimeZone("Australia/Sydney")));//设置指定时区解析
        log.info(dd.parse(dstr1).toString());

5.数据库时区设置:

show variables like '%time_zone%';
mysql> set time_zone='+8:00';

修改后 select 结果(timestamp)转换成相应timezone时间展示,DateTime字段不变化
插入的时间时转换相应的timezone时间插入

相关文章

网友评论

      本文标题:SpringBoot多时区

      本文链接:https://www.haomeiwen.com/subject/tykqcrtx.html