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,具体用法、好处、自己去发现。
//具体就这么多、有什么错误希望大佬能指正、共同进步,感谢!