springboot项目如何设置时区

 更新时间:2023年07月20日 15:01:35   作者:genghongsheng  
这篇文章主要介绍了springboot项目如何设置时区问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

springboot项目设置时区

在springboot启动类里添加如下代码:

    @PostConstruct
   void setDefaultTimezone() {
      TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
//    TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
   }

用任何一个都行,将默认时区设置为东八区。

应用场景

有时候应用服务器的时间是UTC协调世界时间,在我们用浏览器访问的时候,就会出现日期快八小时,

因为服务器的时区跟我们东八区差八个小时导致的,用以上方法可以解决这个问题。

springboot统一时区的方案

UTC时间是什么

  • 协调世界时,又称世界统一时间、世界标准时间、国际协调时间。
  • 由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。

UTC +时区差=本地时间

中国时间

  • 中国大陆、中国香港、中国澳门、中国台湾、蒙古国、新加坡、
  • 马来西亚、菲律宾、西澳大利亚州的时间与UTC的时差均为+8,也就是UTC+8。

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

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

思路为:

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

2.保证服务器时区为UTC 

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

@SpringBootApplication
    public class Application {
      @PostConstruct
      void started() {
        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

3.保证数据库时区为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,否则无效。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring 多数据源方法级别注解实现过程

    Spring 多数据源方法级别注解实现过程

    多数据源管理是Spring框架中非常重要的一部分,它可以提高应用程序的灵活性和可靠性,从而更好地满足业务需求,这篇文章主要介绍了Spring 多数据源方法级别注解实现,需要的朋友可以参考下
    2023-07-07
  • Java中JMM与volatile关键字的学习

    Java中JMM与volatile关键字的学习

    这篇文章主要介绍了通过实例解析JMM和Volatile关键字的学习,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • SpringMVC框架中使用Filter实现请求日志打印方式

    SpringMVC框架中使用Filter实现请求日志打印方式

    这篇文章主要介绍了SpringMVC框架中使用Filter实现请求日志打印方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 深入理解Spring Cloud Zuul过滤器

    深入理解Spring Cloud Zuul过滤器

    这篇文章主要给大家介绍了关于Spring Cloud Zuul过滤器的相关资料,通过阅读本文您将了解:Zuul过滤器类型与请求生命周期、如何编写Zuul过滤器、如何禁用Zuul过滤器和Spring Cloud为Zuul编写的过滤器及其功能,需要的朋友可以参考下。
    2017-02-02
  • JDBC使用Statement修改数据库

    JDBC使用Statement修改数据库

    这篇文章主要为大家详细介绍了JDBC使用Statement修改数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • SpringBoot开发中使用DTO层的方法示例

    SpringBoot开发中使用DTO层的方法示例

    DTO层是在应用程序的业务逻辑层和数据访问层之间引入的一个中间层,用于在不同层之间传输数据,本文主要介绍了SpringBoot开发中使用DTO层,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Spring mvc工作原理_动力节点Java学院整理

    Spring mvc工作原理_动力节点Java学院整理

    这篇文章主要为大家详细介绍了Spring mvc工作原理的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • SpringBoot使用拦截器Interceptor实现统一角色权限校验

    SpringBoot使用拦截器Interceptor实现统一角色权限校验

    角色权限校验,是保证接口安全必备的能力:有权限才可以操作,所以,一般对于这种通用逻辑,推荐不与主业务逻辑耦合,那么怎么来解耦,那么本文小编就给大家详细讲解如何使用拦截器Interceptor实现统一角色权限校验,需要的朋友可以参考下
    2023-07-07
  • maven仓库访问顺序小结

    maven仓库访问顺序小结

    在日常操作中,相信很多人在maven仓库的优先级顺序是什么问题上存在疑惑,本文就来介绍一下maven仓库访问顺序,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • SpringBoot结合JSR303对前端数据进行校验的示例代码

    SpringBoot结合JSR303对前端数据进行校验的示例代码

    这篇文章主要介绍了SpringBoot结合JSR303对前端数据进行校验的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论