找回密码
 立即注册

springboot Date类型返回到前端少一天问题

2022-7-23 22:33:06 · 站长社区
首先确定数据库获取到的时间是不是对的
要是有错误则在数据库连接上加UTC
  1. jdbc:mysql://192.168.0.31:3306/{dbName}?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC
复制代码
可以在启动类上加
  1. @PostConstruct
  2. void setDefaultTimezone() {
  3. TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
  4. }
复制代码
统一使用UTC时间存储

后台Date类型,前端显示时间少一天
  1. //日期输出格式化
  2.     @JsonFormat(pattern = "yyyy-MM-dd")
  3.     private Date pURCHASE;
复制代码
  • 可以简单直接的在后端把Date类型转成String,这是由于SpringBoot中对于@RestController或者@Controller+@ResponseBody注解接口默认返回的是Json数据,而SpringBoot默认的是Jackson框架转换,而Jackson默认的时间时区是GMT,对于中国时间少8个小时。
  • 在application.yml中添加 spring.jackson.time-zone=GMT+8
将Spring Boot返回的JSON数据中的Date类型自动转化为Long型时间戳
  1.   jackson:
  2.     serialization:
  3.       write-dates-as-timestamps: true
复制代码


全部评论 0

首先确定数据库获取到的时间是不是对的
要是有错误则在数据库连接上加UTC
  1. jdbc:mysql://192.168.0.31:3306/{dbName}?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC
复制代码
可以在启动类上加
  1. @PostConstruct
  2. void setDefaultTimezone() {
  3. TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
  4. }
复制代码
统一使用UTC时间存储

后台Date类型,前端显示时间少一天
  1. //日期输出格式化
  2.     @JsonFormat(pattern = "yyyy-MM-dd")
  3.     private Date pURCHASE;
复制代码
  • 可以简单直接的在后端把Date类型转成String,这是由于SpringBoot中对于@RestController或者@Controller+@ResponseBody注解接口默认返回的是Json数据,而SpringBoot默认的是Jackson框架转换,而Jackson默认的时间时区是GMT,对于中国时间少8个小时。
  • 在application.yml中添加 spring.jackson.time-zone=GMT+8
将Spring Boot返回的JSON数据中的Date类型自动转化为Long型时间戳
  1.   jackson:
  2.     serialization:
  3.       write-dates-as-timestamps: true
复制代码


热门推荐
您需要登录后才可以回帖 立即登录
说说你的想法......
0
0
0
返回顶部