前端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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM