java中的实体类时间格式化

作者:Try?and?try?again 时间:2022-05-18 02:18:19 

实体类时间格式化

java 实体类 时间格式化注解

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date time;
  • pattern:时区

  • timezone:时区

@JsonFormat 默认是标准时区的时间,多出现少8小时的情况

使用时,按需求加上时区 北京时间 东八区 timezone=”GMT+8”

作用:后台的时间 格式化 发送到前台

@DateTimeFormat 接受前台的时间格式 传到后台的格式

实体类时间类型属性常用注解

假如有如下实体类:

import java.util.Date;

public class DateVo {
   private Date date;

public void setDate(Date date){
       this.date = date;
   }
   public Date getDate(){
       return date;
   }
}

提供如下接口:

@RestController
@RequestMapping("/date")
public class DateController {

@RequestMapping("test")
   public DateVo getDate(DateVo vo){
       System.out.println(vo.getDate());

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       String date = sdf.format(vo.getDate());
       System.out.println(date);

DateVo dateVo = new DateVo();
       dateVo.setDate(new Date());
       return dateVo;
   }
}

直接访问接口(参数vo: 2020-12-25 11:22:33),会抛出以下异常:

java中的实体类时间格式化

理由很简单:类型参数不匹配,传入参数vo的date为字符串类型,而要求时Date类型,这就需要入参格式化

注解一:DateTimeFormt(入参格式化)

注解@DateTimeFormt是由spring框架提供的,作用就是实现在入参格式化过程中对时间类型参数指定格式。

java中的实体类时间格式化

对上述实体类做如下修改:

public class DateVo {
   @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
   private Date date;

public void setDate(Date date){
       this.date = date;
   }
   public Date getDate(){
       return date;
   }
}

再次访问接口(参数vo: 2020-12-25 11:22:33),访问成功,在控制台会打印如下内容:

Fri Dec 25 11:22:33 CST 2020

2020-12-25 11:22:33 

同时向前端返回:

"2020-12-25T03:40:26.625+00:00"

对于这个返回内容可能不符合前端时间格式要求,需要对其进行出参格式化

注解二:JsonFormt(出参格式化)

注解@JsonFormt是由jackson提供的,由于spring框架中默认集成的json工具是jackson(国内使用更广泛的fastjson,其提供注解@JSONField),因此使用注解@JsonFormt不需要另外引入依赖,再次对实体类修改:

public class DateVo {
   @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
   @JsonFormat(
   pattern = "yyyy-MM-dd HH:mm:ss",
   timezone = "GMT+8"
)
private Date date;

public void setDate(Date date){
       this.date = date;
   }
   public Date getDate(){
       return date;
   }
}

继续访问接口(参数vo: 2020-12-25 11:22:33)返回:

2020-12-25 11:40:26

注意:在使用注解@JsonFormt时必须要指定时区,默认情况下为0时区,于北京时间(东8时区)相差8个小时

注解三:JSONField(出参格式化)

在国内使用更多是Alibaba 开源的fasejson,其同样提供了指定时间格式的注解。使用spring框架开发时需要注意的是spring框架中没有集成fastjson,因此需要在pom文件中引入其依赖,实体类修改如下:

public class DateVo {
   @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
   @JSONField(format="yyyy-MM-dd HH:mm:ss")
private Date date;

public void setDate(Date date){
       this.date = date;
   }
   public Date getDate(){
       return date;
   }
}

来源:https://blog.csdn.net/qq_42094345/article/details/107562839

标签:java,实体类,时间,格式化
0
投稿

猜你喜欢

  • 关于MyBatis中SqlSessionFactory和SqlSession简解

    2022-02-18 13:57:37
  • Mybatis之typeAlias配置的3种方式小结

    2023-11-26 16:42:14
  • Spring bean的实例化和IOC依赖注入详解

    2023-11-23 23:57:15
  • 详解Spring-boot中读取config配置文件的两种方式

    2021-07-04 15:52:55
  • Spring Boot整合流控组件Sentinel的场景分析

    2023-06-22 19:27:53
  • Android四大组件之broadcast广播使用讲解

    2023-07-27 12:41:50
  • Android超清晰6.0权限申请AndPermission

    2023-08-05 10:52:26
  • JAVA中使用FTPClient实现文件上传下载实例代码

    2021-08-17 20:45:05
  • 如何设置Spring Boot测试时的日志级别

    2023-11-10 14:11:20
  • 执行java请求时导致在脚本执行结束时JVM无法退出

    2023-11-25 05:57:13
  • Spring MVC 使用支付宝接口完成在线支付的示例代码

    2023-11-29 04:07:55
  • 解决BeanUtils.copyProperties无法成功封装的问题

    2023-11-23 14:59:23
  • java的url方式、本地方式获取json文件内容

    2023-08-22 18:30:23
  • Vs2022环境下安装低版本.net framework的实现步骤

    2023-07-04 02:58:12
  • 解决jmap命令打印JVM堆信息异常的问题

    2023-11-05 09:07:02
  • 分布式医疗挂号系统SpringCache与Redis为数据字典添加缓存

    2023-06-28 02:26:55
  • Android 使用 SharedPreferences 保存少量数据的实现代码

    2023-07-03 01:00:11
  • Java命令设计模式优雅解耦命令和执行提高代码可维护性

    2023-11-23 06:25:46
  • SpringBoot常用数据库开发技术汇总介绍

    2023-11-11 09:39:22
  • java实现简单的验证码功能

    2023-08-06 09:21:44
  • asp之家 软件编程 m.aspxhome.com