今天在请求第三方接口时,对方反馈接收到的日期少了一天!我自己试了下,发现还真是!有点懵逼!代码如下:
@Data
public static class Tt{
private String tech_aca_estab;
private String trade_test;
@JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss")
private Date date_award;
}
看起来好像没什么问题。没办法,百度一波。发现遇到这个问题的人很少,还好最终找到一个问答。
非常感谢他提供的解答!
解决方法:@JsonFormat注解中的timezone属性设置为: GMT+8
把代码改成如下,问题解决。
@Data
public static class Tt{
private String tech_aca_estab;
private String trade_test;
@JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8")
private Date date_award;
}
简单理解:日期转为json时,如果不指定时区,则采用默认值:JsonFormat.DEFAULT_TIMEZONE。会导致时间不准确。
PS:我试了下springMVC,它是能正确转换的。应该是自动根据所在的时区做了转换。