后端打印出来的日志是 CST 时区。
看看数据库的时区设置的是什么,一般默认是 UTC,比CST少8小时,所以会显示上一天
你的意思是?需要将数据库的时区设为CST吗?
查看数据库的时区:
mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.14 sec)
得知,数据库使用的是系统时区,系统时区就是CST,那么因此数据库使用的时区是CST,不是UTC
数据库打印下当前时间,看下和实际时间一样吗?
啥意思,系统时间和实际实际一样呀。
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2022-07-30 09:40:47 |
+---------------------+
1 row in set (0.01 sec)
@liaowenxiong: 那就不是数据库的问题了,检查一下实体类里面的日期是用什么接收的,Date还是LocalDateTime,后者应该需要设置一下时区
看到这个标题就可以确定是时区问题
检查一下格式化时间 用标准的
我认为这个问题出在Java代码上。
LocalDateTime 接收的值就出现不准确了,建议直接用 LocalDate 接收,反正数据库只需要存储日期就可以。
UI传输值只是精确到日期,数据表字段也是,所以服务端做传输时不需要增加其它未知的的东西,这样反而不好。
检查你连接数据库的时候有没有指定时区