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,否则无效。

总结

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

相关文章

  • 浅谈java实现redis的发布订阅(简单易懂)

    浅谈java实现redis的发布订阅(简单易懂)

    本篇文章主要介绍了浅谈java实现 redis的发布订阅(简单易懂),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • JAVA中哈希表HashMap的深入学习

    JAVA中哈希表HashMap的深入学习

    这篇文章主要介绍了哈希表HashMap的深入学习,哈希表是一种非常重要的数据结构,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,本文会对java集合框架中HashMap的实现原理进行讲解。感兴趣的话可以一起来学习
    2020-07-07
  • java中判断字符串数组是否包含特定字符串的三种方法实现与对比

    java中判断字符串数组是否包含特定字符串的三种方法实现与对比

    这篇文章主要为大家详细介绍了java中判断字符串数组是否包含特定字符串的三种方法实现与对比,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-12-12
  • Java使用java -jar启动并按日分包日志的最佳实践

    Java使用java -jar启动并按日分包日志的最佳实践

    在生产环境中,Java应用程序通常以java -jar方式运行,而日志管理是运维的重要部分,如果日志文件过大,不仅影响性能,还会增加排查问题的难度,因此,按日分包日志成为常见的需求,本文将介绍4种实现方式,并提供详细配置和代码示例,需要的朋友可以参考下
    2025-07-07
  • SpringBoot3.x版本与Mybatis-Plus不兼容问题

    SpringBoot3.x版本与Mybatis-Plus不兼容问题

    当使用3.x版本的SpringBoot结合Mybatis-Plus时版本不兼容就会报错,本文就来介绍一下这个问题的解决方法,感兴趣的可以了解一下
    2024-03-03
  • spring boot 枚举使用的坑整理

    spring boot 枚举使用的坑整理

    在本篇文章里我们给大家整理了关于spring boot 枚举使用的坑以及相关知识点内容,需要的朋友们学习下。
    2019-08-08
  • 基于Retrofit+Rxjava实现带进度显示的下载文件

    基于Retrofit+Rxjava实现带进度显示的下载文件

    这篇文章主要为大家详细介绍了基于Retrofit+Rxjava实现带进度显示的下载文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • JVM Tomcat性能实战(推荐)

    JVM Tomcat性能实战(推荐)

    下面小编就为大家带来一篇JVM Tomcat性能实战(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • Java纯代码实现导出pdf

    Java纯代码实现导出pdf

    在项目开发中,产品的需求越来越奇葩啦,开始文件下载都是下载为excel的,做着做着需求竟然变了,要求能导出pdf,所以本文就来用Java实现导出pdf功能吧
    2023-12-12
  • Java 创建并应用PPT幻灯片母版的方法示例

    Java 创建并应用PPT幻灯片母版的方法示例

    幻灯片母版可供用户设置幻灯片的样式,本文将介绍如何用Java创建并应用单个或多个幻灯片母版。感兴趣可以了解一下
    2020-06-06

最新评论