@DateTimeFormat 和 @JsonFormat 的详细研究

2023-09-22 09:42:00

关于这两个时间转化注解,先说结论

一、介绍

1、@DateTimeFormat

@DateTimeFormat 并不会根据得到其属性 pattern 把前端传入的数据转换成自己想要的格式,而是将前端的String类型数据封装到Date类型;其次它的 pattern 属性是用来规范前端传入数据的格式
@DateTimeFormat 它用于前端日期String数据提交封装到日期Date数据类型中
示例1:前端传递的2023-09-23 17:10:30   后端采用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")   不会出错
示例2:前端传递的2023-09-23 17:10:30   后端采用@DateTimeFormat(pattern = "yyyy-MM-dd")   出错
示例3:前端传递的2023-09-23   后端采用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")   不会出错

2、 @JsonFormat

@JsonFormat 会对前端传来的数据进行处理,按照其 pattern 属性定义把传入的数据转化
@JsonFormat 同样会对后端传给前端的数据进行处理,按照其 pattern 属性定义直接进行截取返回给前端
示例1:前端传递的2023-09-23 17:10:30   后端采用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")   不会出错
示例2:前端传递的2023-09-23 17:10:30   后端采用@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")   不会出错
示例3:前端传递的2023-09-23   后端采用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")   出错

二、代码演示

创建实体类

@Data
public class Test1 {

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date createTime2;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date updateTime2;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime3;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date updateTime3;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime4;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime4;

}

创建controller

@RestController
@RequestMapping("/test")
public class TestController {


    @PostMapping("/test1")
    public ResultVo<?> test1(@RequestBody Test1 test1) {

        System.out.println("test1 = " + test1);

        return ResultVo.success(test1);
    }

}

三、postman测试

前端传递的时间类型为日期字符串类型(如:2023-09-22),后端采用 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")接收会出错

前端传递的时间类型为时间字符串类型(如:2023-09-23 09:30:30),后端采用@DateTimeFormat(pattern = "yyyy-MM-dd")接收会报错

关于时间返回类型

createTime、createTime2前端传递日期字符串,后端采用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")接收,controller处理完返回给前端的时间格式为日期Date

createTime3、createTime4前端日期字符串,后端用@JsonFormat 对应的格式接收,按照其 pattern 属性定义直接进行截取返回给前端

更多推荐

Crazy Excel:Excel中的泥石流

CrazyExcel又名:疯狂Excel。是一款PC端的Excel软件工具,该软件支持windows,macos等主流操作系统。正如其名,作者在设计之初就加入了一些疯狂的设计,目的是创作出更加好用有效的excel工具。不管是专业还是小白,都能够轻松使用,解决用户在使用excel中的一些痛点,接下来我们将详细介绍Craz

三维模型3DTile格式轻量化压缩必要性分析

三维模型3DTile格式轻量化压缩必要性分析理解3DTile格式轻量化压缩的必要性,首先需要理解三维模型的复杂性和数据量。三维模型通常包含大量的顶点、面片和纹理信息,这使得其数据量非常大,尤其对于大规模的三维地理空间数据,例如城市或地形模型,数据量可能高达数百GB甚至TB。而在很多实际应用场景中,如在线地图服务、移动设

IllusionDiffusion:OpenAI 推出的图像生成新工具

OpenAI近日发布了一款名为IllusionDiffusion的图像生成器,它利用了一种名为“幻觉扩散”的技术来生成逼真的图像。幻觉扩散是一种基于生成对抗网络(GAN)的技术,它通过不断地对原始图像进行修改来生成新的图像。在IllusionDiffusion中,原始图像被称为“幻觉”,而新的图像被称为“扩散”。Ill

【腾讯云】打造未来智能应用的基石:腾讯混元大模型

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技

Python数据分析的增强式AI库

迷途小书童读完需要4分钟速读仅需2分钟1引言近年来,随着数据集的不断增大和复杂性的提高,数据分析变得越来越具有挑战性。在Python中,Pandas一直是处理和分析结构化数据的首选库。然而,随着人工智能的发展,我们需要一种能够轻松应对这些挑战的工具。幸运的是,PandasAI应运而生,它将Pandas的强大功能与人工智

合肥对新通过(CMMI)五级、四级、三级认证的软件企业,对新通过信息技术服务标准(ITSS)认证的软件企业,给予最高50万奖励

合肥市加快软件产业发展推进软件名城创建若干政策实施细则为贯彻落实《合肥市人民政府办公室关于印发合肥市加快软件产业发展推进软件名城创建若干政策的通知》(合政办〔2023〕9号)文件精神,规范政策资金管理,制定本实施细则。一、申报主体在合肥市行政区域范围内注册成立、具有独立法人资格的软件企业或软件园区运营单位。本实施细则中

SpringMVC自定义注解

目录一,Java注解简介1.java注解的定义2.Java注解分类2.1JDK基本注解2.2JDK元注解2.3自定义注解二,自定义注解如何自定义注解?三,Aop自定义注解的应用四,总结一,Java注解简介1.java注解的定义Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配

网页游戏如何开发网页游戏类型有哪些?

随着互联网的普及和技术的发展,网页游戏已经成为娱乐和休闲活动的重要组成部分。无需安装任何应用程序,只需打开浏览器,您就可以畅玩各种类型的网页游戏。然而,开发网页游戏并不是一项容易的任务,因为不同类型的游戏需要不同的开发方式和技术。在本文中,我们将探讨一些常见的网页游戏类型以及它们的开发方式。1.休闲游戏开发休闲游戏通常

【B+树索引】索引的使用和注意事项

索引的使用和注意事项一、索引的注意事项根节点是不会变的!内节点中目录项记录的唯一性一个页面至少容纳两条记录二、回表的代价三、更好的使用索引四、索引的代价一、索引的注意事项上一篇【B+树索引】索引页的结构含有可以快速查询的秘密从索引页的角度认识了MySQL为了提升查询速率,使用了B+树的数据结构对索引页进行了内存存储。以

【2023华为杯B题】DFT类矩阵的整数分解逼近(思路及代码下载)

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2详细数学模型及题目、数据🎉3参考文献🌈4Matlab代码及思路实现💥1概述离散傅里叶变换(Discre

爬虫逆向实战(34)-某视综数据(MD5、AES)

一、数据接口分析主页地址:某视综1、抓包通过抓包可以发现数据接口是/rank/waiting/fans2、判断是否有加密参数请求参数是否加密?通过查看“载荷”模块可以发现有一个sign参数请求头是否加密?无响应是否加密?通过查看“响应”模块可以发现数据是加密的cookie是否加密?无二、加密位置定位1、sign(1)看

热文推荐