日期转Json需要注意的问题

今天在请求第三方接口时,对方反馈接收到的日期少了一天!我自己试了下,发现还真是!有点懵逼!代码如下:

@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;
}
看起来好像没什么问题。没办法,百度一波。发现遇到这个问题的人很少,还好最终找到一个问答。

https://ask.csdn.net/questions/702738?utm_term=objectmapper+%E6%9E%9A%E4%B8%BE%E7%B1%BB%E5%9E%8B&utm_medium=distribute.pc_aggpage_search_result.none-task-ask_topic-2~all~first_rank_v2~rank_v25-11-702738.nonecase&answer=832517&spm=1005.2026.3001.5703

非常感谢他提供的解答!

解决方法:@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,它是能正确转换的。应该是自动根据所在的时区做了转换。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值