由于Feign中默认时区用的是美国时间,所以会导致服务端接收的Date与实际会相差14小时。
例如:客户端接收时间为 2019-7-24 00:00:00 但到服务端就会变成 2019-7-24 14:00:00
解决方法:在服务端做配置,将返回时间与传入时间做一致处理
@Configuration public class WebConfigBeans { @Autowired private RequestMappingHandlerAdapter handlerAdapter; @PostConstruct public void initEditableValidation() { ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter .getWebBindingInitializer(); if (initializer.getConversionService() != null) { GenericConversionService genericConversionService = (GenericConversionService) initializer .getConversionService(); genericConversionService.addConverter(String.class, Date.class, new String2DateConverter()); } } class String2DateConverter implements Converter<String, Date> { @Override public Date convert(String source) { SimpleDateFormat sdf = new SimpleDateFormat( "EEE MMM dd HH:mm:ss 'CST' yyyy", Locale.US); try { return sdf.parse(source); } catch (ParseException e) { e.printStackTrace(); } return null; } } }
当然如果不嫌麻烦,只做查询操作的话,直接用字符串传递也可以。