Springboot 使用taos-jdbcdriver 3.8.3 为什么会导致Java的 Date date= new Date() 是格林威治时间

【TDengine 使用环境】
开发环境

【TDengine 版本】

3.4.1

【操作系统以及版本】

taos服务器使用ubuntu 开发使用win10 + idea

【部署方式】非容器部署

【集群节点数】

【集群副本数】

【描述业务影响】

springboot2

maven里增加了依赖

com.taosdata.jdbc taos-jdbcdriver 3.8.3

在service里面用System.out.println(TimeZone.getDefault().getDisplayName());输出是格林威治时间

注释掉上述依赖 输出就是中国标准时间

连接器用的

jdbc:TAOS-WS://host:6041/database?timezone=Asia/Shanghai

【问题复现路径/shan】做过哪些操作出现的问题

【遇到的问题:问题现象及影响】

【资源配置】

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

可以尝试做以下的修改看是否有效:

在Spring Boot主类的 main 方法中,必须在 SpringApplication.run() 之前,使用静态代码块或直接调用 TimeZone.setDefault()。

java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.TimeZone;

@SpringBootApplication
public class YourApplication {

public static void main(String[] args) {
    // 关键:在Spring容器启动前,强制设置JVM默认时区
    TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
    SpringApplication.run(YourApplication.class, args);
}

}
原理:
驱动修改时区的行为,发生在它所依赖的类被加载时。通过在 run 方法调用前执行 setDefault,可以确保应用和所有后续组件都以你指定的时区运行。