@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,否则接收参数时会抛出异常。