系统采用多时区设计的时候,往往我们需要统一时区,需要统一的地方如下:

  • 服务器(Tomcat服务)
  • 数据库(JPA + Hibernate)
  • 前端数据(前端采用Vuejs)

思路为:
将数据库和服务器的时间都采用标准时区UTC存储处理。前端拿到标准时区的数据,统一根据用户所在时区进行转换。这样保证了后端数据时区的一致性,前端根据实际情况进行渲染。

保证服务器时区为UTC

服务启动的时候,将当前时区设置为UTC,代码如下:

@SpringBootApplicationpublic class Application {@PostConstructvoid started() {TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
//TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
//TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
} public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

  

这样就保证了Java程序的时区为UTC。

保证数据库时区为UTC

Hibernate支持设置时区,在Springboot中增加配置如下:

spring.jpa.properties.hibernate.jdbc.time_zone = UTC

如果是MySQL数据库,连接池链接后面增加配置如下:

?serverTimezone=TimeZone&useLegacyDatetimeCode=false

如:

spring.datasource.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=UTC

其中useLegacyDatetimeCode参数默认是true,我们需要手动设置为false,否则无效。

作者:Devid
链接:https://www.jianshu.com/p/504c17b35e17
來源:简书

转载于:https://www.cnblogs.com/chancy/p/9995562.html

SpringBoot 统一时区的方案相关推荐

  1. data spring 指定时区_SpringBoot 统一时区的方案

    系统采用多时区设计的时候,往往我们需要统一时区,需要统一的地方如下: 服务器(Tomcat服务) 数据库(JPA + Hibernate) 前端数据(前端采用Vuejs) 思路为: 将数据库和服务器的 ...

  2. Spring Cloud Alibaba 统一门户:基于网关的统一用户认证方案

    本讲咱们涉及以下三方面内容: 传统的用户认证方案: JWT 与 JJWT: 基于网关的统一用户认证. 传统的用户认证方案 我们直奔主题,什么是用户认证呢?对于大多数与用户相关的操作,软件系统首先要确认 ...

  3. springboot统一异常处理类及注解参数为数组的写法

    springboot统一异常处理类及注解参数为数组的写法 参考文章: (1)springboot统一异常处理类及注解参数为数组的写法 (2)https://www.cnblogs.com/zhucww ...

  4. springboot mysql时区设置_java/springboot/mysql时区问题解决方案

    解决步骤: 先理清楚逻辑 数据从mysql查出-->进入docker(没容器化跳过)-->进入相应的应用程序(比如java或者框架springboot之类的)-->程序处理完输出返回 ...

  5. springboot统一异常处理及返回数据的处理

    springboot统一异常处理及返回数据的处理 参考文章: (1)springboot统一异常处理及返回数据的处理 (2)https://www.cnblogs.com/renshengruozhi ...

  6. SpringBoot统一返回处理出现cannot be cast to java.lang.String异常

    SpringBoot统一返回处理出现cannot be cast to java.lang.String异常 一 问题出现背景: 二 解决方案 三 异常原因分析 原因: 源码详细分析: 正常返回: 返 ...

  7. 统一门户:基于网关的统一用户认证方案

    1.传统的用户认证方案: 2.JWT与JJWT: 3.基于网关的统一用户认证:           * 服务器自主验签方案 * API网关统一验签方案            

  8. 让“无处不在的工作空间”成为可能:Ivanti统一IT管理方案布局次世代

    新冠肺炎疫情的突袭,打乱了人们的生活和工作方式,尽管在严格控制下,中国地区已经进入全面复工复产阶段,但不少企业仍然选择继续实行远程办公模式,以及应对未知的明天.全球蔓延的疫情让企业意识到在这个瞬息万变 ...

  9. springboot 统一设置时区

    控制springboot服务的时区为东八区 @SpringBootApplication public class Application {public static void main(Strin ...

最新文章

  1. dw可以编辑java吗_为什么很多人说 Java 不适合编写桌面应用?
  2. 从 idea打包工程到dos下命令运行
  3. 夺命雷公狗---linux NO:17 linux系统查找
  4. 算法优化:最大字段和,双指针遍历(n^2),分治法(nlogn),动态规划(n)
  5. 微型计算机技术第三版第三章答案,第3章微机组装技术作业(答案)
  6. 好久不来这里写东西了.
  7. Unity3D命令行Build
  8. Vim编辑器运用的五个技巧
  9. linux mysql 5.7 配置_Linux环境下详细讲解部署MySQL5.7版本
  10. matlab绘制两个函数,一系列复杂表达式迭代。怎么能画出某两个变量的函数曲线...
  11. RS485协议详解RS485与RS232优缺点比较
  12. EnableViewState属性
  13. MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
  14. 探索性测试方法讲解之一
  15. IO字节流读取文本中文乱码
  16. 如何将自己的录音形成二维码,用微信扫一下就能听?
  17. Github精选:本周10大热门项目
  18. struts中的javascript - seinbar的专栏
  19. 三、三个路由器间的互联
  20. 使用memccpy函数替代不安全的str[n]cpy、str[n]cat等

热门文章

  1. Strutsw2与Spring整合流程-简述
  2. 面试常碰到++p/p--问题到底结果是什么?
  3. Sping中利用HandlerExceptionResolver实现全局异常捕获
  4. 假设检验_python 重点
  5. LeetCode简单题之字符串中的单词数
  6. AI框架精要:设计思想
  7. ST为飞行时间传感器增加了多目标测距
  8. 机器学习算法的优点和缺点总结
  9. python时区转换_在python 不同时区之间的差值与转换方法
  10. Ubuntu 系统下终端界面在打开一个终端的快捷键