一、该问题的重现步骤是什么?
当前时间10点59分
1. 实体类,默认基础字段 createTime
2. 保存实体类,使用框架的super.save(实体) 方法,save自动补充创建时间,数据库存create_time 2025-05-12 10:59:41
3. page查询分页接口,回显时间2025-05-12 02:59:41
二、你期待的结果是什么?实际看到的又是什么?
createTime在
org.springblade.core.mp.base.BaseEntity
里面
我希望的是时间展示正常。
当前我自己测试,发现如果前端传递值 2025-05-12 10:59:41 ,打印时间会自动加时区 2025-05-12 18:59:41 ,new Date 打印时间 2025-05-12 10:59:41
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
BladeX
4.4.0.RELEASE
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
bladex自带的所有模块都有这个问题么,如果所有都这样,需要设置下时区,目前默认+8,就是时区问题。mysql和服务器都设置下时区
当前试了包含自带的岗位等创建时间都是这个问题,当前使用psql数据库,之前服务器和数据库都设置时区了,设置时区的情况下有这个问题。麻烦问下,你说的设置时区指的是哪里?服务器打印TimeZone timeZone = TimeZone.getDefault(); 这个也是上海时区的
检查如下几个:
一、jdbc连接参数
spring.datasource.url=jdbc:postgresql://localhost:5432/db_name?serverTimezone=Asia/Shanghai
二、后端时区
java -jar -Duser.timezone=Asia/Shanghai your-app.jar
或者
@PostConstruct
void init() {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
}
三、配置jackson时区
spring.jackson.time-zone=Asia/Shanghai
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
四、后端测试打印一个日期看看
@GetMapping("/test")
public void testTime() {
System.out.println(new Date()); // 应输出上海时区时间
}
五、如果后端正常,看下前端返回的时间是什么
const date = new Date("2025-05-12T10:59:41+08:00");
dayjs("2025-05-12T10:59:41+08:00").format("YYYY-MM-DD HH:mm:ss");
解决方案
三、配置jackson时区
spring.jackson.time-zone=Asia/Shanghai
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
原因,前端也是给的北京时间
但是服务器序列化 yyyy-MM-dd HH:mm:ss格式 转 Date 自动+8小时,反序列化自动-8小时了。
扫一扫访问 Blade技术社区 移动端