前端和数据库时间差8小时

15 篇文章 0 订阅
5 篇文章 0 订阅

🎈1 参考文档

前端和数据库时间差8小时? | CSDN-nsnsttn

Jackson对时间的序列化和反序列化及时区问题 | CSDN-C_纯属虚构


🔍2 问题描述:前端和数据库时间差8小时

  1. 前端选择时间。

在这里插入图片描述

  1. 现实中正确的时间。

    在这里插入图片描述

  2. 输出结果,我们自己输入的结果正常,创建时间相差8小时。

    在这里插入图片描述

  3. 数据库中的内容,我们自己输入的结果相差八小时,创建时间反而正常了。

    在这里插入图片描述


💡3 原因分析

  1. 我们默认是UTC(UTC = GMT)时区的东八区(GMT + 8)。
  2. MySQL默认的时区是UTC时区(GMT + 0)时间,相差8小时。
  3. Jackson在序列化时间时是按照UTC格式进行格式化的,在国内的默认的时区是使用CST时区。 CST = GMT + 8CSTGMT多8小时。

🚀4 解决方案

4.1 解决MySQL插入时间差8小时

  1. 输入select now();查看MySQL时间。

    在这里插入图片描述

  2. 如果查询mysql时间和本地不一致,使用以下语句设置mysql时区。

    show variables like '%time_zone%';	# 查询当前时区
    set global time_zone='+8:00';	# 在标准时区上加+8小时,即东8区时间
    flush privileges; # 立即生效
    
  3. 时间和你本地当前时间一致后。
    尝试将配置文件application.yml中的url加上后缀?serverTimezone=Asia/Shanghai,例如:

    url: jdbc:mysql://localhost:3306/XXXX?serverTimezone=Asia/Shanghai
    

4.2 解决前端传到后端差8小时

在实体类中关于时间类型字段的注解后加上 timezone = "GMT+8"。例如:

@JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
private Date startTime;//开始时间

@JsonFormat(pattern = "HH:mm:ss", timezone = "GMT+8")
private Date endTime;//结束时间

@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;//创建时间

@TableField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;//更新时间
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1 需求分析 3 1.1 系统目标 3 1.2 需求定义 3 2 功能说明 4 2.1 图书基本情况 4 2.2 办理借书证 4 2.3 实现借书功能 4 2.4 实现还书功能 5 2.5 图书查询 5 3 系统功能结构图 5 4 业务流程图 6 4.1 借阅信息管理 6 4.2 书籍信息管理 6 4.3 读者信息管理 7 4.4 系统管理 7 5 绘制数据流图 7 5.1 “借书证生成”数据流图 8 5.2 借书证注销数据流图 8 5.3 新书入库数据流图 9 5.4 读者借书数据流图 10 5.5 读者还书数据流图 11 5.6 查询图书数据流图 12 6 数据库设计 13 7 ER图 14 需求分析 系统目标 本系统主要实现对图书馆的信息进行管理,图书馆的正常运营中总是面对大量的读者信息,图书信息以及两者相互作用产生的借书信息,因此要对读者资源,图书资源,借书信息进行管理。本系统的开发就是在于提高图书管理的工作效率,加强图书馆的管理。 图书馆管理系统是图书馆管理工作中不可缺的部分,它的内容对于图书馆的管理者和使用者来说都至关重要,所以图书管理系统应该能够为管理者或读者提供充足的信息和快捷的数据处理手段。但一直以来人们使用传统人工的方式进行图书管理和借阅管理,这种管理方式存在着许多缺点,如:效率低、易忘记、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对图书信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低、便于打印等。这些优点能够极大地提高图书管理的效率,也是图书馆的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要的事情。图书管理信息系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于后台数据库的建立要求建立起数据一致性和完整性强.数据安全性好的库。而对于前端应用程序则要求应用程序功能完备,易使用等特点。 需求定义 作为学生对图书管理系统的要求有: 1. 能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。 2. 能够方便地借阅图书、续借图书、归还图书。 3. 能够查询自己的基本资料、借阅图书情况。 4. 能够熟悉图书管理系统的使用。 作为图书管理员,他们对图书管理系统的要求有: 1. 能方便的对图书进行录入登记,注销陈旧的书籍。 2. 能够方便地对读者进行登记,或注销读者生信息(基本信息,借阅信息)。 功能说明 系统功能分析是在系统开发的总体任务的基础上完成。本系统需要完成的功能主要有5部分: 图书基本情况 1.书籍类别标准的制定,类别信息的输入,包括类别编号,类别名称,关键词,备注信息等。 2.书籍类别信息的查询,修改,包括类别编号,类别名称,关键词,备注信息等。 3.书籍信息的输入,包括书籍编号,书籍名称,书籍类别,作者名称,出版社名称,出版日期,书籍页数,关键词,登记日期,备注信息等。 办理借书证 1.新生办理借书证。 2.丢失办理借书证。 实现借书功能 1.借书信息的输入,包括借书信息编号,读书编号,读者姓名,书籍编号,书籍名称,借书日期,备注信息等。 2.借书信息的查询,修改,包括借书信息编号,读者编号,读者姓名,书籍编号,书籍名称,借书日期,备注信息等。 实现还书功能 1.还书信息的输入,包括还书信息编号,读者编号,读者姓名,书籍编号,书籍名称,借书日期,还书日期,备注信息等。 2.还书信息的查询和修改,包括还书信息编号,读书编号,读者姓名,书籍编号,书籍名称,借书日期,还书日期,备注信息等。 图书查询 可以对图书进行的精确、模糊查询并讲查询信息以列表的方式呈现给用户,方便用户查找信息,另外,对超期的借阅情况能自动给出提示信息。 系统功能结构图
人们在日常生活中经常会遇到这样的情况:超市的经营者希望将经常被同时购买的商品放在一起,以增加销售;保险公司想知道购买保险的客户一般具有哪些特征;医学研究人员希望从已有的成千上万份病历中找出患某种疾病的病人的共同特征,从而为治愈这种疾病提供一些帮助……对于以上问题,现有信息管理系统中的数据分析工具无法给出答案。因为无论是查询、统计还是报表,其处理方式都是对指定的数据进行简单的数字处理,而不能对这些数据所包含的内在信息进行提取。随着信息管理系统的广泛应用和数据量激增,人们希望能够提供更高层次的数据分析功能。为此,数据仓库应运而生。   数据仓库的概念及特点   数据仓库概念始于本世纪80年代中期,首次出现是在号称“数据仓库之父”William H.Inmon的《建立数据仓库》一书中。随着人们对大型数据系统研究、管理、维护等方面的深刻识认和不断完善,在总结、丰富、集中多行企业信息的经验之后,为数据仓库给出了更为精确的定义,即“数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合”。   数据仓库并没有严格的数学理论基础,也没有成熟的基本模式,且更偏向于工程,具有强烈的工程性。因此,在技术上人们习惯于从工作过程等方面来分析,并按其关键技术部份分为数据的抽取、存储与管理以及数据的表现等三个基本方面。   ⑴数据的抽取:数据的抽取是数据进入仓库的入口。由于数据仓库是一个独立的数据环境,它需要通过抽取过程将数据从联机事务处理系统、外部数据源、脱机的数据存储介质中导入到数据仓库。数据抽取在技术上主要涉及互连、复制、增量、转换、调度和监控等方面。数据仓库中的数据并不要求与联机事务处理系统保持实时同步,因此数据抽取可以定时进行,但多个抽取操作执行的时间、相互的顺序、成败对数据仓库中信息的有效性则至关重要。   ⑵存储和管理:数据仓库的真正关键是数据的存储和管理。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。要决定采用什么产品和技术来建立数据仓库的核心,则需要从数据仓库的技术特点着手分析。   ⑶数据的表现:数据表现实际上相当于数据仓库的门面,其性能主要集中在多维分析、数理统计和数据挖掘方面。而多维分析又是数据仓库的重要表现形式,近几年来由于互联网的发展,使得多维分析领域的工具和产品更加注重提供基于Web前端联机分析界面,而不仅仅是在网上发布数据。   提到数据仓库,人们难免会想到仅有一字之差的数据库,那么,数据仓库和我们经常提到的数据库有哪些区别呢?为什么要使用数据仓库呢?
存入数据库时间差8小时的问题通常是由于时区设置不正确导致的。在Java中,使用new Date()获取的时间是根据JVM默认的时区来确定的,而JVM默认使用的是0时区的时间,与北京时间相差8小时。当将数据存入数据库时,数据库服务器会将本地时间转换为服务器所对应的时区,即0时区,所以会再次相差8小时。当返回给前端时,如果使用了Spring Boot的@RestController或@Controller+@ResponseBody注解,返回值会被默认的Jackson框架转换为Json格式,而Jackson框架默认的时区是GMT,相对于中国是了8小时,所以最终返回到前端的结果会相差8小时。解决这个问题的方法有两种: 1. 手动设置JVM时间:将时间改为第8时区的时间,可以使用以下代码进行设置: TimeZone.setDefault(TimeZone.getTimeZone("GMT+8")); 2. 在配置数据库的URL上加上"serverTimezone"参数,确保存入数据库时间正确的。例如: jdbc:mysql://localhost:3306/datasource?serverTimezone=GMT%2B8 同时,还需要确认配置了Jackson的"time-zone"参数,确保给前端返回的时间正确的。例如: jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss 需要注意的是,如果只是手动设置JVM时间,而JVM仍然是后台0时区的时间,那么在后台执行逻辑时仍然会出现时间相差8小时的问题。因此,建议使用第一种方法,直接将整个JVM改为北京的8时区。总结起来,这个问题的根本原因是时区设置不正确。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [java获取时间相差8小时的问题及解决方式](https://blog.csdn.net/qq_42031483/article/details/100625564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [springboot + 数据库时间差8小时](https://blog.csdn.net/gulang00/article/details/130501650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值