今天在请求第三方接口时,对方反馈接收到的日期少了一天!我自己试了下,发现还真是!有点懵逼!代码如下:
@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,它是能正确转换的。应该是自动根据所在的时区做了转换。
在调用第三方接口时遇到日期转换问题,日期显示比实际少一天。经过研究发现,问题在于Jackson序列化时默认时区导致的时间偏差。通过在@JsonFormat注解中添加timezone属性并设置为'GMT+8',成功解决了日期转换不准确的问题。此问题在Spring MVC中由于自动处理时区转换并未出现。解决方案是对日期字段添加@JsonFormat注解并指定时区。
2404

被折叠的 条评论
为什么被折叠?



