Java日期格式化的实现(@JsonFormat和@JSONField)

 更新时间:2024年05月11日 11:15:45   作者:GUMP小甘  
本文主要介绍了Java日期格式化的实现,主要介绍了@JsonFormat和@JSONField两种方式,具有一定的参考价值,感兴趣的可以了解一下

前后端日期格式转换

DTO : 前端向后端接口请求时的对象。
VO: 后端向前端响应的对象。

前端:vue
后端:SpringBoot + MybatisPlus

涉及的两个包:

  • com.alibaba.fastjson.annotation.JSONField;
  • com.fasterxml.jackson.annotation.JsonFormat;

经验证:

1.如果是DTO中的日期字段,如:private Date start;

应该加: 

@JSONField(format = "yyyy-MM-dd HH:mm:ss") 

如果加的是:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8"),会出现问题:前端选择日期1.11,存到数据库发现是1.10,或者我只传日期,时间默认00:00:00,但存进去是08:00:00

2.如果是VO中的日期字段,如:private Date start;

应该加: 

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")

 如果加的是:@JSONField(format = "yyyy-MM-dd HH:mm:ss")会出现问题:返回给前端页面显示的是:时间戳: 1645527428033

注意:此处必须有 timezone="GMT+8" ,否则显示出的时间会差几个小时,导致对不上

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//前端传来的日期格式化
@JSONField(format = "yyyy-MM-dd HH:mm:ss")//后端传的日期格式化

@JsonFormat 和 @JSONField 都是在 Java 对象序列化为 JSON 格式时,用于指定日期格式的注解,但它们通常与不同的 JSON 库相关联。

@JsonFormat(Jackson 库)

在 Jackson 库中,使用 @JsonFormat 注解可以指定日期和时间的格式。示例:

import com.fasterxml.jackson.annotation.JsonFormat;

public class MyObject {

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
    private Date date;

    // Getter and setter methods
}

在上面的示例中,@JsonFormat 注解中的 pattern 属性指定了日期格式,而 timezone 属性用于指定时区。

@JSONField(Fastjson 库)

在 Fastjson 库中,使用 @JSONField 注解来实现相同的效果。示例:

import com.alibaba.fastjson.annotation.JSONField;

public class MyObject {

    @JSONField(format = "yyyy-MM-dd HH:mm:ss", timeZone = "UTC")
    private Date date;

    // Getter and setter methods
}

与 @JsonFormat 不同,@JSONField 使用 format 属性指定日期格式,而 timeZone 属性用于指定时区。

这两个注解在具体的项目中选择使用哪一个,通常取决于你使用的 JSON 库。如果使用 Jackson,就使用 @JsonFormat;如果使用 Fastjson,就使用 @JSONField

到此这篇关于Java日期格式化的实现(@JsonFormat和@JSONField)的文章就介绍到这了,更多相关Java日期格式化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java框架---Spring详解

    Java框架---Spring详解

    这篇文章主要介绍了Java的Spring框架并用其开始编写第一个程序Hellow world的方法,Spring是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2021-09-09
  • 详解Java的Hibernate框架中的缓存与二级缓存

    详解Java的Hibernate框架中的缓存与二级缓存

    这篇文章主要介绍了Java的Hibernate框架中的缓存与二级缓存,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-12-12
  • SpringBoot实现过滤器和拦截器的方法

    SpringBoot实现过滤器和拦截器的方法

    大家应该都晓得实现过滤器需要实现 javax.servlet.Filter 接口,而拦截器会在处理指定请求之前和之后进行相关操作,配置拦截器需要两步,本文通过实例代码给大家介绍SpringBoot 过滤器和拦截器的相关知识,感兴趣的朋友一起看看吧
    2022-11-11
  • java四种访问权限实例分析

    java四种访问权限实例分析

    这篇文章主要介绍了java四种访问权限实例分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Springboot 1.5.7整合Kafka-client代码示例

    Springboot 1.5.7整合Kafka-client代码示例

    这篇文章主要介绍了Springboot 1.5.7整合Kafka-client代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 浅谈Java实现分布式事务的三种方案

    浅谈Java实现分布式事务的三种方案

    现在互联网下,分布式和微服务横行,难免会遇到分布式下的事务问题,当然微服务下可能没有分布式事务,但是很多场景是需要分布式事务的。下面就来介绍下什么是分布式事务和分布式事务的解决方案
    2021-06-06
  • SpringBoot中AOP的动态匹配和静态匹配详解

    SpringBoot中AOP的动态匹配和静态匹配详解

    这篇文章主要介绍了SpringBoot中AOP的动态匹配和静态匹配详解,在创建代理的时候对目标类的每个连接点使用静态切点检查,如果仅通过静态切点检查就可以知道连接点是不匹配的,则在运行时就不再进行动态检查了,需要的朋友可以参考下
    2023-09-09
  • Java8新特性之方法引用的实践指南

    Java8新特性之方法引用的实践指南

    这篇文章主要给大家介绍了关于Java8新特性之方法引用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java毕业设计实战之药店信息管理系统的实现

    Java毕业设计实战之药店信息管理系统的实现

    这是一个使用了java+SSM+JSP+layui+maven+mysql开发的药店信息管理系统,是一个毕业设计的实战练习,具有药店信息管理该有的所有功能,感兴趣的朋友快来看看吧
    2022-01-01
  • java实现字符串反转案例

    java实现字符串反转案例

    这篇文章主要为大家详细介绍了java实现字符串反转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09

最新评论