Java中Date类型上的注解

在日常开发中,涉及到日期时间类型Date和常用的注解@DateTimeFormat和@JsonFormat

java.util.Date;

org.springframework.format.annotation.DateTimeFormat;

com.fasterxml.jackson.annotation.JsonFormat;

一 Date类型字段不使用注解

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {private Date date;
}@RestController
public class FrontController {@PostMapping("/one")public Emp testOne(Emp emp) {System.out.println("接收到的入参是: " + emp);return emp;}@PostMapping("/two")public Emp testTwo(@RequestBody Emp emp) {System.out.println("接收到的入参是: " + emp);return emp;}
}

如果是Params传参,无论参数用什么样的日期时间格式,都会报400错误;

如果是json格式传参,前端传参格式只能是yyyy-MM-dd格式,其他格式都会报400错误;

前端使用json格式,日期时间类型格式是yyyy-MM-dd,前端默认使用世界时间传递,会自动补齐时分秒00时00分00秒,Date数据类型又会将时间转换为当前时区的时间:

        前端请求时间和后端代码处理时间不一致,Java代码处理的日期时间是东八区时间;

        前端请求时间和后端响应时间一致,响应前端的时候又转换时间为世界时IOS格式;

二 使用注解@DateTimeFormat

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date date;
}

如果是Params传参,前端传参格式只能是@DateTimeFormat注解定义的格式,否则报400错误;

如果是json格式传参,前端传参格式只能是yyyy-MM-dd格式,其他格式都会报400错误;

前端使用Params传递参数,日期时间格式和@DateTimeFormat注解定义的格式保持一致:

        前端请求时间和后端代码处理时间一致;

        前端请求时间和后端响应时间不一致;

前端使用json格式传参,前端传参格式只能是yyyy-MM-dd格式,其他格式都会报400错误,作用效果和不使用注解一样:

        前端请求时间和后端代码处理时间不一致,Java代码处理的日期时间是东八区时间;

        前端请求时间和后端响应时间一致,响应前端的时候又转换时间为世界时IOS格式;

小结:@DateTimeFormat注解的日期时间类型,前端主要是在Params中传参(即url传参),在前端向后端传日期时间类型数据的时候进行格式化,注解可以用在Date类型字段上和set方法上,或是方法入参上。

三 使用注解@JsonFormat

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date date;
}

如果是Params传参,无论参数用什么样的日期时间格式,都会报400错误;

如果是json格式传参,前端传参格式只能是@JsonFormat注解定义的格式,其他格式都会报400错误;

前端使用json传递参数,日期时间格式和@JsonFormat注解定义的格式保持一致:

        前端请求时间和后端代码处理时间一致;

        前端请求时间和后端响应时间一致;

小结:@JsonFormat注解的日期时间类型,前端只能使用json格式传参,注解可以用在Date类型字段上和set方法上,或是方法入参上。

四 总结

在后台处理日期时间类型时,既要保证后台接收到的日期时间数据格式正确,又要保证后台响应的日期时间数据格式正确:

@DateTimeFormat注解,可以保证前端Params传参时,后台接收处理的日期时间数据格式正确;

@JsonFormat注解,可以保证前端json传参时,后台接收处理的日期时间数据格式正确;

@JsonFormat注解,还可以保证后台响应的日期时间数据格式正确;

所以在日常开发中,@DateTimeFormat和@JsonFormat这两个注解常配合使用;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/419433.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源还是封闭?人工智能的两难选择

这篇文章于 2024 年 7 月 29 日首次出现在 The New Stack 上。人工智能正处于软件行业的完美风暴中,现在马克扎克伯格 (Mark Zuckerberg) 正在呼吁开源 AI。 关于如何控制 AI 的三个强大观点正在发生碰撞: 1 . 所有 AI 都应该是开…

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥…

【软件设计师真题】下午题第一大题---数据流图设计

解答数据流图的题目关键在于细心。 考试时一定要仔细阅读题目说明和给出的流程图。另外,解题时要懂得将说明和流程图进行对照,将父图和子图进行对照,切忌按照常识来猜测。同时应按照一定顺序考虑问题,以防遗漏,比如可以…

Einsum(Einstein summation convention)

Einsum(Einstein summation convention) 笔记来源: Permute和Reshape嫌麻烦?einsum来帮忙! The Einstein summation convention is a notational shorthand used in tensor calculus, particularly in the fields of …

[数据集][目标检测]西红柿缺陷检测数据集VOC+YOLO格式17318张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):17318 标注数量(xml文件个数):17318 标注数量(txt文件个数):17318 标…

张飞硬件11~19-电容篇笔记

电容作用 作为源,对后级电路提供能量,对源进行充电。简单讲就是放电和充电。在电路设计中,源往往与负载相隔很远,增加电容就可以起到稳定作用。电容两端的电压不能激变,增加电容可以稳定电压。 电容可以类比为水坝&a…

(javaweb)mysql---DDL

一.数据模型,数据库操作 1.二维表:有行有列 2. 3.客户端连接数据库,发送sql语句给DBMS(数据库管理系统),DBMS创建--以文件夹显示 二.表结构操作--创建 database和schema含义一样。 这样就显示出了之前的内容…

系统编程--线程

这里写目录标题 线程概念什么是线程简介图解 内核原理图解 线程共享资源与非共享资源共享资源非共享资源 线程优缺点 线程控制原语pthread_self、pthread_create简介代码总结 循环创建多个子线程错误代码 线程间全局变量共享pthread_exit简介代码 pthread_join(回收…

传统CV算法——基于Sift算法实现特征点检测

图像尺度空间 在一定的范围内,无论物体是大还是小,人眼都可以分辨出来。然而,计算机要具备相同的能力却很难。因此,为了让机器能够对物体在不同尺度下有一个统一的认知,就需要考虑图像在不同尺度下所存在的特点。这就…

Infiniband网络架构的技术与性能分析

Infiniband格局寡头,性能占优 这篇文章探讨了网络交换机的性能优势,以及如何通过扩大模型参数量来提高语言模型的生成和预测能力。然而,计算约束对这种正向关系产生了重要影响,导致在相同的计算约束下,总存在最佳的模型…

Linux网络编程IO管理

网络 IO 涉及到两个系统对象,一个是用户空间调用 IO 的进程或者线程,一个是内核空间的内核系统,比如发生 IO 操作 read 时,它会经历两个阶段: 等待内核协议栈的数据准备就绪;将内核中的数据拷贝到用户态的…

随机森林Random Forest(RF)回归预测-MATLAB代码实现

一、随机森林RF(代码获取:底部公众号) 随机森林(Random Forest,RF)是一种机器学习方法,常用于回归预测和分类任务。它通过构建多个决策树,并通过组合它们的预测结果来进行回归预测。…

时序预测|基于粒子群优化支持向量机的时间序列预测Matlab程序PSO-SVM 单变量和多变量 含基础模型

时序预测|基于粒子群优化支持向量机的时间序列预测Matlab程序PSO-SVM 单变量和多变量 含基础模型 文章目录 一、基本原理1. 问题定义2. 数据准备3. SVM 模型构建4. 粒子群优化(PSO)5. 优化与模型训练6. 模型评估与预测7. 流程总结8. MATLAB 实现概述 二、…

浅谈人工智能之python调用通义千问API

浅谈人工智能之python调用通义千问API API-KEY建立 第一步:我们登录阿里云百炼 第二步:点击界面上查看我的API-KEY 第三步:在跳出来的界面中,点击创建API-KEY 第四步:在跳出来的界面中,在描述中输入“t…

算法——支持向量机(support vector machines,SVM)

简介:个人学习分享,如有错误,欢迎批评指正 支持向量机(Support Vector Machine, SVM)是一种监督学习算法,广泛用于分类任务,也可以用于回归和异常检测等问题。SVM的核心思想是通过在特征空间中找…

Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果

目录 Collider 2D 定义: 类型: Rigidbody 2D 定义: 属性和行为: 运动控制: 碰撞检测: 结合使用 实用检测 延伸拓展 1、在Unity中优化Collider 2D和Rigidbody 2D的性能 2、Unity中Collider 2D…

2024/9/8周报

文章目录 摘要Abstract数据挖掘数据挖掘的目标数据挖掘的过程数据挖掘的技术应用领域工具与平台代码示例 总结 摘要 智慧水务项目中,需要对采集的总氮、氨氮、化学需氧量、硝态氮、总磷、硝态氮等数据进行数据处理与挖掘,因此本周对数据挖掘相关内容进行…

CommonCollections1

CommonCollections1 poc展示 这是一段POC,运行后会弹出一个计算器。 import org.apache.commons.collections.*; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; im…

C#使用MQTT(二):MQTT客户端

上一篇我们初步设计了MQTT服务端 C#使用MQTT(一):MQTT服务端-CSDN博客 这里我们设计客户端MQTT Client,接上一篇 新建Windows窗体FormMqttClient 窗体FormMqttClient设计如图: 窗体FormMqttClient设计器相关代码如下 文件FormMqttClient.Designer.cs namespace…

uni-app--》打造个性化壁纸预览应用平台(四)完结篇

🏙️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名前端工程师 🌄个人主页:亦世凡华、 🌆系列专栏:uni-app 🌇座右铭:人生亦可燃烧,亦可腐败&#xf…