时间格式化注解

本文探讨了@JsonFormat、@DateTimeFormat和@JSONField在Java中处理日期格式化的区别,着重于它们在双向转换、单向转换和后端返回数据时的应用,以及解决特定bug的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 @JsonFormat

介绍:
JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象

作用:
1、 @JsonFormat不仅可以完成String转时间类型,也可以完成时间类型转string,可双向转换
2、@JsonFormat注解的作用就是完成json字符串到java对象的转换工作,与参数传递的方向无关。
3、当content-type为application/json时,优先使用@JsonFormat的pattern进行类型转换。而不能使用@DateTimeFormat进行类型转换。

import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 后端返给前端数据时, 日期自动格式化,需要加上时区
 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private LocalDateTime testTime;

2、@DateTimeFormat

介绍:

DateTimeFormat是spring自带的处理框架,主要用于将时间格式化。

作用:
1、将String转换成Date,一般前台给后台传值时用
2、但确不能用于返回数据时把时间类型格式化成固定格式的string类型,单向转换

import org.springframework.format.annotation.DateTimeFormat;
/**
 * 前端传递时间参数到后台时,String固定格式参数会自动封装成时间类型,不需要时区
 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime testTime;

3、 @JSONField(format=“yyyy-MM-dd HH:mm:ss”)

介绍:
JSONField来源于fastjson,是阿里巴巴的开源框架,主要进行JSON解析和序列化。

作用:json字符串转时间类型,时间类型也可以转json字符串,可用于前后传参、后端返回数据,可双向转换

import com.alibaba.fastjson.annotation.JSONField;
/**
 * 后端返给前端数据时, 日期自动格式化,不需要加上时区
 */
 @JSONField(format="yyyy-MM-dd HH:mm:ss")
 private LocalDateTime validUntilTime;

4、关于自己遇到的一个BUG
问题: 使用@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)格式化之后返回的参数中间带T
请添加图片描述

思路:可能是@JsonFormat注解并未生效,目前暂时不知道原因

解决:加上@JSONField(format=“yyyy-MM-dd HH:mm:ss”)注解

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime validUntilTime;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值