# 1. 时区转换问题
相信大多数人都遇见过数据库时间提取到 Java 对象之后,发生时间不一致的问题
连接数据库的时候若不设置,就会引发时区转换的问题,其原因是因为:
咱们所在时区为东八区,而默认时区为 0 区,差距八个小时,所以每次在与数据库交互时就会发生八小时的误差,
若要解决此问题,就要在连接数据库时设置配置:
jdbc:mysql://localhost:3306/friend?useSSL=false&serverTimezone=Asia/Shanghai |
& 后面便是设置的时区,设置之后在与 mysql 交互的时候就不会发生时区的问题了。
# 2. 数据库字段创建时间和修改时间
很多的数据库表都需要有创建时间和修改时间,此时就会引发许多问题
如果是在 Java 类中自己设置时间过于麻烦,此时便可以在数据库建表的时候设置
create_time timestamp default CURRENT_TIMESTAMP not null comment '创建时间',
update_time timestamp default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',
创建表的时候进行以上的设置便能在插入字段和修改字段的时候,数据库自动修改时间
# 3. 数据库时间转换问题
数据库的 timestamp 时间为时间戳,如果转换到 Java 里面就会遇见一些问题
若是 Java 字段直接用 date 数据接收的话也可以,但是和前端交互的时候就会有格式问题,date 的格式直接发送给前端的话,用户看的话不是特别方便,如果每次发送给前端都要转换就显得有些麻烦
此时可以在 pojo 类中设置为 localdatetime 类型,修改一下 set 代码,便可成功接收.
private LocalDateTime createTime; | |
public void setCreateTime(Date createTime){ | |
LocalDateTime localDateTime = createTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); | |
this.createTime = localDateTime; | |
} |