今天做项目的时候遇到了一点小坑,返回给前端的时间少了八个小时,后面发现原因是用mybatis x插件生成的实体类中的时间类型用的是Date,然后百度了一下这个东西,解释如下:
原因:Date类在内部表示日期和时间时,会考虑当前的系统时区。而LocalDateTime是不带时区信息的类,它仅仅表示日期和时间,没有时区的概念。如果需要处理时区,可以使用ZonedDateTime类来表示带有时区的日期和时间。
解决方案一:在注解中加上timezone="GMT+8"
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date updateTime;
解决办法二:直接将时间类型改成LocalDateTime就行,这样子就没有时区的问题了,其实字面意思也好理解,LocalDateTime就是本地的时间,没有什么时区,就是单纯的日期和时间。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;