zoukankan      html  css  js  c++  java
  • Feign Date类型时间错误问题

    问题

    在feign传输date类型的数据时,在调用方时间正确,而被调用方获取时时间会相差14个小时。

    原因

    Feign客户端在进行通信时,会将Date类型对象转为String类型,如果这个时间是北京时间2019年2月19日20点30分,因为中国的时区叫做CTS,所以转化后的String为“Tue Feb 19 20:30:00 CST 2019”. 服务端将接收的String类型日期转换为Date类型,转换采用的是Date的默认构造器new Date('Tue Feb 19 20:30:00 CST 2019'),这里就是错误发生的时刻,因为CTS代表的时区其实有四个(Central Standard Time (USA) UT-6:00、Central Standard Time (Australia) UT+9:30、China Standard Time UT+8:00、Cuba Standard Time UT-4:00),同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。根据JavaDoc,jvm会将CTS理解成了美国中部时区,因此造成了时区错误。

    JVM见到CTS默认是美国的时区(UT-6:00),与中国时区(UT+8:00)相差14个小时。

    解决方法

    1. 使用String类型作为参数,在接收方进行类型转换
    2. 使用JDK8中的LocalDate
    3. 第三种方法增加配置类,使Feign使用自定义的规则转换
  • 相关阅读:
    ML与NLP的2019年度总结与展望
    python在文本开头插入一行的实例
    Git Notes
    warmup 预热学习率
    python error整理
    python 中字符串处理
    集成学习voting Classifier在sklearn中的实现
    机器学习 评价指标整理
    PaddlePaddle Notes
    linux 常用指令 文件操作trick等
  • 原文地址:https://www.cnblogs.com/ingxx/p/11286866.html
Copyright © 2011-2022 走看看