java中的实体类时间格式化

 更新时间:2022年06月27日 11:15:46   作者:Try and try again  
这篇文章主要介绍了java中的实体类时间格式化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

实体类时间格式化

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),会抛出以下异常:

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

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

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

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

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;
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中的 VO,BO,DO 对象命名问题小结

    Java中的 VO,BO,DO 对象命名问题小结

    本文讲解VO,BO,DO 的作用以及如何使用,分析了如何消除三者之间重复的代码,同样结合现实生活中领导配秘书来类比讲解,对Java  VO  对象命名相关知识感兴趣的朋友一起看看吧
    2024-01-01
  • springboot中nacos-client获取配置的实现方法

    springboot中nacos-client获取配置的实现方法

    本文主要介绍了springboot中nacos-client获取配置的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java使用POI实现excel文件的导入和导出

    Java使用POI实现excel文件的导入和导出

    这篇文章主要为大家详细介绍了Java如何使用POI实现excel文件的导入和导出功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Spring Mvc中传递参数方法之url/requestMapping详解

    Spring Mvc中传递参数方法之url/requestMapping详解

    在开发中,参数传递是必不可少的一个功能,下面这篇文章主要给大家介绍了关于Spring Mvc中传递参数方法之url/requestMapping的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • JavaWeb实现上传文件功能

    JavaWeb实现上传文件功能

    这篇文章主要为大家详细介绍了JavaWeb实现上传文件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Java多线程并发FutureTask使用详解

    Java多线程并发FutureTask使用详解

    Java 的多线程机制本质上能够完成两件事情,异步计算和并发,FutureTask 是基于 Runnable 实现的一个可取消的异步调用 API,本文给大家介绍Java 多线程并发FutureTask及基本使用,需要的朋友可以参考下
    2022-06-06
  • Spring Boot 集成 MyBatis 全面讲解(最新推荐)

    Spring Boot 集成 MyBatis 全面讲解(最新推荐)

    MyBatis 是一款优秀的持久层框架,与 Spring Boot 集成后可以大大简化开发流程,本文将全面讲解如何在 Spring Boot 中集成 MyBatis,包括环境配置、基础操作、高级功能和最佳实践,需要的朋友可以参考下
    2024-12-12
  • mybatis-plus主键生成策略

    mybatis-plus主键生成策略

    这篇文章主要介绍了mybatis-plus主键生成策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Java利用读写的方式实现音频播放代码实例

    Java利用读写的方式实现音频播放代码实例

    这篇文章主要介绍了Java利用读写的方式实现音频播放代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java EasyExcel面向Excel文档读写逻辑示例详解

    java EasyExcel面向Excel文档读写逻辑示例详解

    这篇文章主要为大家介绍了java EasyExcel面向Excel文档读写逻辑示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07

最新评论