SpringBoot时区问题

1.后端服务不同的时区

提供各个维度查看或设置时区的方法,详细修改方法不做缀诉
在我们进行一个项目的的时候经常会发现、从前端上传的时间存入数据库时、或者从数据库查询的时间的时候总是会出现时间多了8个小时或者少了8八个小时的问题。要解决这一问题、首先我们要明白一个后端项目究竟有哪些时区:

服务器时间

项目总是会部署在一个服务器上的,例如阿里云、百度云、或者是自购的私有主机、首先我们要设置好服务的时间。可以通过下面命令查询服务器时区
#查询服务器时区

data -r

数据库时间

在此以MySQL为例,当你使用MySQL作为数据持久化工具时,数据库的时区也需要注意:
在连接数据库时注意加上时区:

192.168.*.*:3306/......&serverTimezone=Asia/Shanghai

通过SQL命令可以查看时区

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

SpringBoot时区

整个项目的时区、你可以在启动文件加上

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));

可在properties里面加

spring.jackson.time-zone=GMT+8

也可以在你需要转换的时间类类型参数里面加:

@ApiModelProperty(value = "创建时间", hidden = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Null(message = "创建时间必须为空", timezone = "GMT+8")
private DateTime createTime;

说到这里:建议使用LocalDate,因为常见的是Date,这里需要转换时区,所以用Date举例。
当你想用Date的时候使用、LocalDate、想用DatetTime的时候用LocalDateTime
这里简要说一下:LocalDateTime是不需要去转换时区的。Date需要转换、原因就是使用的默认Jackson序列化导致的问题、LocalDateTime没有问题。Java8以后建议使用LocalDateTime,具体用法、好处、自己去发现。

//具体就这么多、有什么错误希望大佬能指正、共同进步,感谢!

你可能感兴趣的:(spring,boot,数据库,后端,spring,cloud,java)