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基础之SpringBoot整合knife4j

    Java基础之SpringBoot整合knife4j

    Swagger现在已经成了最流行的接口文档生成与管理工具,但是你是否在用的时候也在吐槽,它是真的不好看,接口测试的json数据没法格式化,测试地址如果更改了还要去改配置,接口测试时增加token验证是真的麻烦…针对Swagger的种种缺点,Knife4j就呼之欲出了.需要的朋友可以参考下
    2021-05-05
  • 使用java实现http多线程断点下载文件(二)

    使用java实现http多线程断点下载文件(二)

    下载工具我想没有几个人不会用的吧,前段时间比较无聊,花了点时间用java写了个简单的http多线程下载程序,我实现的这个http下载工具功能很简单,就是一个多线程以及一个断点恢复,当然下载是必不可少的,需要的朋友可以参考下
    2012-12-12
  • Spring Cloud Hystrix 线程池队列配置(踩坑)

    Spring Cloud Hystrix 线程池队列配置(踩坑)

    这篇文章主要介绍了Spring Cloud Hystrix 线程池队列配置(踩坑),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • struts升级到2.5.2遇到的问题及解决方案(推荐)

    struts升级到2.5.2遇到的问题及解决方案(推荐)

    原来的版本是2.3.x,由于安全原因需要升级到2.5.2。但是在升级过程中遇到各种各样的问题,下面小编给大家带来了struts升级到2.5.2遇到的问题及解决方案,需要的朋友参考下吧
    2016-11-11
  • Java用BigDecimal类解决Double类型精度丢失的问题

    Java用BigDecimal类解决Double类型精度丢失的问题

    这篇文章主要介绍了Java用BigDecimal类解决Double类型精度丢失的问题,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-12-12
  • Spring IOC容器使用详细讲解

    Spring IOC容器使用详细讲解

    IOC-Inversion of Control,即控制反转。它不是什么技术,而是一种设计思想。这篇文章将为大家介绍一下Spring控制反转IOC的原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-12-12
  • MybatisPlus处理四种表与实体的映射及id自增策略分析

    MybatisPlus处理四种表与实体的映射及id自增策略分析

    在最近的工作中,碰到一个比较复杂的返回结果,发现简单映射已经解决不了这个问题了,只好去求助百度,学习mybatis表与实体的映射应该怎么写,将学习笔记结合工作碰到的问题写下本文,供自身查漏补缺,同时已被不时之需
    2022-10-10
  • Java transient关键字与序列化操作实例详解

    Java transient关键字与序列化操作实例详解

    这篇文章主要介绍了Java transient关键字与序列化操作,结合实例形式详细分析了java序列化操作相关实现方法与操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Java Calendar类使用总结及使用实例

    Java Calendar类使用总结及使用实例

    这篇文章主要介绍了Java Calendar类使用总结及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Java8-Stream流操作List去重问题

    Java8-Stream流操作List去重问题

    这篇文章主要介绍了Java8-Stream流操作List去重问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论