【问题】
springboot存Date类型数据到mongodb里,在Studio 3T/Robo 3T中显示的时间比正常时间小8个小时,但Dao读取出来的时间又是正确的。如图:
Studio 3T(早8小时)-
Dao读取(正确)-
【原因】
mongo 里的时间并没有少八个小时,2023-12-08T08:22:47.504Z 是包含时区的时间字符串,Z 代表着 0时区。
等价于 2023-12-08T16:22:47.504+0800, 这个 +0800 代表东八区,这两个时间字符串代表着相同的时间。
在 mongo shell 里试一下 ISODate("2023-12-08T16:22:47.504+0800").getTime() === ISODate("2023-12-08T08:22:47.504Z").getTime() ,结果是 true。
结论:mongodb里存的时间是正常的,只是在Studio 3T中显示不正常。
【解决】
修改Studio 3T配置
Edit - Preferences - Local time zone to display date values in,由UTC改为+08:00
Studio 3T(正常)-