日期格式化@DateTimeFormat @JsonFormat

@Data
public class DateEntity {
@DateTimeFormat(pattern = “yyyy-MM-dd”)
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
private Date now;

@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDate yesterday;

@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime tomorrow;

}

1、@DateTimeFormat只支持字符串转日期
@JsonFormat双向支持
2、@DateTimeFormat无法设置时区,@JsonFormat可以设置时区
3、同时注解,好像@JsonFormat优先
4、个人认为相比之下@DateTimeFormat没有任何用
5、建议使用LocalDate类型来接收,Date接收如果不处理会有时区问题
6、“yyyy-MM-dd”这种格式日期根本不需要加注解

重大发现:
1、以上观点有错误;
有@RequestBody注解时,才是@JsonFormat优先,同时不处理时区会多8个小时;
没有@RequestBody注解时,@JsonFormat不会生效,这个时候只能用@DateTimeFormat,
并且@DateTimeFormat不会增加8个小时,但是返回前端的时候就会少八个小时,这个时候同时使用@JsonFormat可以完美解决。

没有@RequestBody,对象里面的字段@DateTimeFormat必须与@Validated连用;
单个参数不需要。字符串转日期必须加@DateTimeFormat,否则接收参数时会抛出异常。

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值