今天遇到一个问题,在使用Feign传递java.util.Date类型的对象时,再接收方转换后的时间变成了第二天。
方法一:最简单的办法是传递String类型替代Date类型。
方法二:引用来自CSDN上的代码作解释:
@Component
public class DateFormatRegister implements FeignFormatterRegistrar {
public DateFormatRegister() {}
@Override
public void registerFormatters(FormatterRegistry registry) {
registry.addConverter(Date.class, String.class, new Date2StringConverter());
}
private class Date2StringConverter implements Converter < Date, String > {
@Override
public String convert(Date source) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(source);
}
}
}
-- -- -- -- -- -- -- -- -- -- -
作者: Zany後起之秀
来源: CSDN
原文: https: //blog.csdn.net/Zany540817349/article/details/79868257
版权声明: 本文为博主原创文章, 转载请附上博文链接!
其实上述的代码的原理是因为Feign默认对Date使用的是toString()的方式来转换,转换后的时区被标识为Mon Feb 25 22:26:38 CST 2019这样的格式,恶心的是CST可视为美国、澳大利亚、古巴或中国的标准时间。当这个字符串直接传入spring mvc 的参数转为date的时候时区概念就混乱了,所以上述的表示方法等于是讲发送请求时Date类型的参数转换为一种比较常规的时间格式,并在SpringMVC接收端的地方支持解析这种日期格式就可以了。
了解 工作生活心情记忆 的更多信息
订阅后即可通过电子邮件收到最新文章。