跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

解决 JPA 中 new Date() 插入数据库时间差 8 小时问题

JPA 使用 new Date() 向数据库插入数据时常出现 8 小时时差问题。主要原因涉及 Docker 容器时区配置、JDBC 连接参数及实体类注解设置。解决方法包括在 Docker Compose 中将镜像时区绑定至宿主机系统时间;在数据库连接 URL 中添加 serverTimezone=GMT%2b8 参数;或在实体类字段上添加@JsonFormat 注解指定 GMT+8 时区。完成上述配置后重新部署服务即可修正时间偏差。

zhang发布于 2020/3/27更新于 2026/6/919 浏览
解决 JPA 中 new Date() 插入数据库时间差 8 小时问题

解决 JPA 中 new Date() 插入数据库时间差 8 小时问题

一、Docker 部署环境时

分别检查 docker 内部镜像时区,如果时区不正确,推荐将 docker 镜像的时区和系统时区绑定。

yaml
version: "3"
services:
  deploy:
    build: .
    container_name: doc_server
    network_mode: "host"
    ports:
      - 8080:8080
    volumes:
      - ./log:/log
      # 时区绑定到系统时间
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
二、JPA 进行新增数据时

createTime 采用 new Date() 方式,则有可能出现时差问题,解决方案如下:

a. 修改 JDBC 参数的 serverTimezone=GMT%2b8

yaml
datasource:
  type: com.zaxxer.hikari.HikariDataSource
  url: jdbc:mysql://17.17.27.21:3306/dbname?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
  username: root
  password: root

b. 修改在时间的实体类上加注解:@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")

// 创建时间
@Basic
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "create_time", columnDefinition = "datetime COMMENT '创建时间'")
private Date createTime;

// 更新时间
@Basic
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "update_time", columnDefinition = "datetime COMMENT '更新时间'")
private Date updateTime = new Date();

添加后,重新部署服务,查看是否正常。

  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ESP32 小智 AI 机器人语音对话系统设计与云端部署
  • 国内首个教育垂直大模型落地:机遇、挑战与伦理风险
  • 注意力机制与 Transformer 模型实战
  • 自然语言处理在医疗健康领域的应用与实战
  • ChatGLM3 大模型本地化部署与应用开发技术指南
  • 安路 FPGA 下载器驱动安装与测试指南
  • C# 后端导出 Excel 并实现前端直接下载方案
  • Flutter serial 库鸿蒙化适配:Web 串口通信与硬件连接实战
  • OpenClaw 接入自定义模型及 WebUI 智能操作实战
  • GESP2023年12月C++二级认证选择题解析(9-15题)
  • 分布式系统设计与实战:Java 微服务架构落地
  • OpenClaw 接入自定义模型并通过 WebUI 实现智能操作
  • PptxGenJS 实战:利用 JavaScript 自动化生成专业 PPT
  • 大语言模型 LLM 解决 AI 幻觉方法深度分析
  • 前端组件库实战:告别重复造轮子
  • 大模型学习路径(一):人工智能与大模型基础概述
  • NativeScript-Vue 跨平台原生应用开发实战
  • MCP 工具速成:npx 与 uvx 全流程安装指南
  • Python Pandas 库核心用法详解
  • 2025 主流 AI 代码生成工具深度评测与选型指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

目录

  1. 解决 JPA 中 new Date() 插入数据库时间差 8 小时问题
  2. 一、Docker 部署环境时
  3. 二、JPA 进行新增数据时
  • 💰 8折买阿里云服务器限时8折了解详情