java前后端时间相差八小时_后端 Date 时间 传到前端,相差8小时

2024-03-17 00:40

本文主要是介绍java前后端时间相差八小时_后端 Date 时间 传到前端,相差8小时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.问题

后台时间正确,返回给前台的时间不正确,和后台差8个小时

后台打印的时间如下:

798d12be2d3afcf8e1528cdc072813a8.png

数据库存储时间如下:

4426970a0ebaafac25f0b823ee59da40.png

接口返回给前台的时间如下:

53b4c8506658061ce295096d5bfa8938.png

相差8个小时

原因

spring中对于@RestController或者@Controller+@ResponseBody

注解的接口方法的返回值默认是Json格式,

所以当对于date类型的数据,在返回浏览器端是会被spring-boot

默认的Jackson框架转换,而Jackson框架默认的时区GMT(相对于中国是少了8小时)。

方案

1 如果你的项目是 spring-boot

在application.properties添加配置 配置spring的时区 这条语句能解决你时间少8个小时问题

spring.jackson.time-zone=GMT+8

在跟上一条时间戳配置

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

可以是Date时间格式化,一般这两条语句一起用

2 如果你的项目是 springMvc

这个主要是因为时区的问题,只要在Spring的配置文件中设置好时区就好了。代码如下:

NON_NULL

原因二

这个原因隐藏很深,当你发现你试过上面的方案后时间还是少的话,请检查数据是从什么时候时间变少了,若从数据库查出来就少啦,若你有用的数据库是mysql,且mysql.jar是6.x版本的话(与5.x不同),可能你配置的时区错了

c0a2049ecb5f7978b12faa1328cdde72.png

linux系统时区是UTC,而mysql使用的是系统时区。

方案

1 在 数据库的配置文件 jdbd url 加上

serverTimezone=Asia/Shanghai

jdbc:mysql://localhost:3306/dcoj?serverTimezone=Asia/Shanghai

2、修改mysql数据库的my.cnf文件的[mysqld]字段,添加default-time-zone=+8:00

081f10de156cddb42d6d6f68f4092d59.png

3、修改linux系统时区为Asia/Shanghai

mysql数据库运行在docker容器中,所以要修改mysql容器的时区为Asia/Shanghai。

进入mysql容器,链接文件,退出mysql容器,重启mysql

docker exec -it mysql bash

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

exit

docker restart mysql

这篇关于java前后端时间相差八小时_后端 Date 时间 传到前端,相差8小时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817281

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd