zoukankan      html  css  js  c++  java
  • 前端JSON请求转换Date问题

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

    // 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 id="save" parameterType="FooVO">
        insert into foo(dt) values (#{dt})
    </insert>
    
  • 相关阅读:
    C++类的内存结构
    emplace与insert的区别(C++11)
    C/C++宏的奇技淫巧
    编译器对内存的分配
    利用C++实现模块隐藏(R3层断链)
    PCB标准规范
    RTC 总结
    0.96寸OLED显示屏 IIC接口(SSD1306)
    串行通信简介(SPI, IIC, UART)
    人生感悟
  • 原文地址:https://www.cnblogs.com/kayj/p/11984215.html
Copyright © 2011-2022 走看看