首页IT科技前端传时间给后端,怎么处理(前后端时间传递之注解形式(@DateTimeFormat与@JsonFormat))

前端传时间给后端,怎么处理(前后端时间传递之注解形式(@DateTimeFormat与@JsonFormat))

时间2025-06-17 10:34:20分类IT科技浏览4405
导读:一、前言 在我们开发的过程中常常会遇到前后端传递时间的问题,同样笔者也是遇到了这样的问题,以前笔者的做法是在代码中转换:前端传String类型的时间,然后后端用String接收以后存入数据库时再转化为Date;返回给前端时也是一样,先从数据库中查出Date类型的数据,返回给前端时转化为...

一              、前言

在我们开发的过程中常常会遇到前后端传递时间的问题              ,同样笔者也是遇到了这样的问题                     ,以前笔者的做法是在代码中转换:前端传String类型的时间       ,然后后端用String接收以后存入数据库时再转化为Date;返回给前端时也是一样              ,先从数据库中查出Date类型的数据                     ,返回给前端时转化为String       ,非常麻烦              。后来也是看到了用注解的方式非常方便       ,在这里记录并共享一下                     。

二                     、前端传后端(@DateTimeFormat)

前端给后端传递时间参数的时候传递的都是String类型的数据                     ,后端如果用数据库类型Date来接收的话              ,则会报 异常       。此时后端如果在对应的时间字段上加上 @DateTimeFormat 注解,就可以解决这个问题       ,而且在存入数据库 的时候依然用这个字段                     ,而不用再进行类型转化              。

2.1 场景

前端传过来的时间参数为String类型的数据的时候              ,就可以用如下的注解方式去接收数据,需要注意的是                     ,注解中 的样式如果为yyyy-MM-dd HH:mm:ss的话                     ,前端穿的时候必须是这样的格式,如果前端只传yyyy-MM-dd的话              ,就 会报异常                     。

2.2 例子

//此时库里datetime类型的数据可以用Date类型直接进行存储 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime;

注意:这里的Date是在java.util.Date;这个包下面的                     ,不要引用错误了       。

三       、后端传前端

3.1 场景

后端传递给前端去展示时间的时候也是将时间转化为String类型的时间数据去返回       。此时就需要加上 @JsonFormat 注解来解决这个问题                     。

3.2 例子

//这里就可以根据前端需要展示的时间格式进行返回       ,修改patter样式即可 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",locale = "zh", timezone = "GMT+8") private Date updateTime;

注意:这里的这个注解是在com.fasterxml.jackson.annotation.JsonFormat;这个包下的              。并且时区记得加上              ,不然时间会少八个小时       。

四              、java.sql包下的Date用法

4.1 说明

当前端展示为yyyy-MM-dd时并且后端也存为yyyy-MM-dd的时候可以用java.sql包下的Date来作为时间数据 类型                     ,此时后端无需做任何处理即可接收到前端传过来的该格式的数据                     。后端返回时也无需处理就会直接将该格式 的数据返回              。

注意:和数据库映射的类中的时间格式也要用java.sql包下的Date类型。如果用java.util包下的Date则要用上面的注解进行处理                     。

4.2 结果测试

4.2.1 swagger请求传参 4.2.2 接口 @RestController @RequestMapping("/test") public class TestController { @Resource TestService testService; @PostMapping("/save") public TestVO save(TestDTO testDTO) { //测试类 Test test = new Test(); //属性拷贝 BeanUtils.copyProperties(testDTO, test); boolean save = testService.save(test); //如果新增成功就把该数据转化为Vo的形式返回 if (save) { Integer id = test.getId(); Test testObj = testService.getById(id); TestVO testVO = new TestVO(); BeanUtils.copyProperties(testObj, testVO); return testVO; } return null; } } 4.2.3 接口中用到的实体类 //实体类1 @Data @EqualsAndHashCode(callSuper = true) @TableName(value = "test", autoResultMap = true) public class Test extends BaseEntity{ private static final long serialVersionUID = 1L; /** * 姓名 */ private String name; /** * 地址 */ private String address; } //公共实体类2       ,Model是mybatis-plus的类 @Data public class BaseEntity<T extends Model> extends Model { /** * */ private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "主键") protected Integer id; /** * 逻辑删除标识 */ @TableLogic(value = "false", delval = "true") @ApiModelProperty(value = "逻辑删除标识") private Boolean deleted = Boolean.FALSE; @ApiModelProperty(value = "创建时间") private Date createTime; @ApiModelProperty(value = "更新时间") private Date updateTime; @Override protected Serializable pkVal() { return this.id; } 4.2.4 返回结果

参考博客:

https://blog.csdn.net/imVainiycos/article/details/102712056

https://blog.csdn.net/Amir_wu/article/details/102563152

说明:本文章内容为笔者亲测有效       ,若有不当之处                     ,希望各位大佬不吝赐告              ,笔者定当虚心接收并改正                     。

声明:本站所有文章       ,如无特殊说明或标注                     ,均为本站原创发布。任何个人或组织              ,在未征得本站同意时,禁止复制                     、盗用       、采集       、发布本站内容到任何网站                     、书籍等各类媒体平台              。如若本站内容侵犯了原著者的合法权益                     ,可联系我们进行处理                     。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
facebook系应用(Facebook的实时Hadoop系统) 江陵seo关键字技巧(江陵seo方案诀窍)