目的:记录使用SpringMVC中前端JSON数据中的日期转换成Date数据类型时区产生的问题
记录下遇到过的问题
在使用SpringMVC框架中,使用@RequestBody注解将前端的json数据转换为对应的bean,使用@ResponseBody将bean转换为json(注意:开启该controller层的包扫描)同时使用@JsonFormat,但是没有指定时区,所以导致json中的日期转换成Date类型时,因为时区导致时间不一致。
使用MySQL数据库,同时没有指定时区导致插入数据库时存在时区问题。
前端JSON请求转换Date问题

// VO
public class FooVO {
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    private Date dt;
}    

// controller
@Controller
public class FooController {
    @ResponseBody
    @RequestMapping(value = "/save", method = RequestMethod.POST, consumes = "application/json")
    public ResponseEntity<?> save(@RequestBody FooVO foo) {
        // {"dt":"yyyy-MM-dd HH:mm:ss"} 转换成对应的foo时 如果FooVO.dt字段上的@JsonFormat没有指定时区,则在转换时出现了时区的问题
        return new ResponseEntity<>(HttpStatus.OK);
    }
}
<!-- 配置jdbc的url时没有指定时区,所以插入Date数据类型时也存在了因时区造成的时间问题 -->
<!-- jdbc:mysql://ip:port/db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai -->
<insert >
    insert into foo(dt) values (#{dt})
</insert>

相关文章:

  • 2021-11-09
  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
  • 2021-04-12
  • 2022-12-23
  • 2022-02-06
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-04-23
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
  • 2022-12-23
  • 2021-12-22
相关资源
相似解决方案