无法转换类型为';java.lang.String';至所需类型';java.util.Date';

无法转换类型为';java.lang.String';至所需类型';java.util.Date';,java,spring-boot,netflix-feign,Java,Spring Boot,Netflix Feign,我有两个微服务,通过外文进行通信。 一个微服务公开另一个正在调用的方法。 该方法将日期作为参数 这是方法的代码: @Override public String verifyWorkingDaysByAccesstimeAndAttendanceDate(@PathVariable int accessTimeId, @PathVariable("attendanceDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME

我有两个微服务,通过外文进行通信。 一个微服务公开另一个正在调用的方法。 该方法将日期作为参数

这是方法的代码:

@Override
public String verifyWorkingDaysByAccesstimeAndAttendanceDate(@PathVariable int accessTimeId,
        @PathVariable("attendanceDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date attendanceDate) {

    AccessTime accessTime = accessTimeService.findByIDService(AccessTime.class, accessTimeId);

    String day = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(attendanceDate).toUpperCase();
    String status = "NOT_VERIFIED";

    if (workingDayservice.findWorkingDaysByAccesstimeAndDate(accessTime, attendanceDate).toString().contains(day)) {
        status = "VERIFIED";
    }

    return status;

}
==>如您所见,它正在获取日期并验证其在数据库中的存在性

另一个微服务正在使用这个类来调用这个方法:

@FeignClient(name = "access-control-micro-services-access-time")
public interface AccessTimeClient {

@RequestMapping(value = "/api/v${webService.currentVersion}/workingDay/accessTime/{accessTimeId}/{attendanceDate}", method = RequestMethod.GET)
String verifyWorkingDaysByAccesstimeAndAttendanceDate(@PathVariable("accessTimeId") int accessTimeId,
        @PathVariable("attendanceDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date attendanceDate);
==>第二个微服务正在另一个类中调用此方法,并为其提供从数据库检索的日期(格式:2019-03-29 08:38:08)

我的代码正在启动此异常:

未能将“java.lang.String”类型的值转换为所需的“java.util.Date”类型;嵌套异常为org.springframework.core.convert.ConversionFailedException:未能将值“2019-03-29 08:38:08.0”的类型[java.lang.String]转换为类型[@org.springframework.web.bind.annotation.PathVariable@org.springframework.format.annotation.DateTimeFormat java.util.Date];嵌套异常为java.lang.IllegalArgumentException:无效格式:“2019-03-29 08:38:08.0”在“08:38:08.0”处格式不正确


根据问题,外部客户端不支持
@DateTimeFormat
注释。
@DateTimeFormat
注释由Spring MVC使用,而不是由Spring Cloud OpenFeign使用


有几种方法可以修复,例如,或。它需要根据您的用例定制代码,例如,您可能希望将旧的
Date
替换为
ZonedDateTime

无效格式:\“2019-03-29 08:38:08.0\”在\“08:38:08.0\”
这个非常明确的错误消息让您感到困惑的是什么,例外情况是:
无效格式:“2019-03-29 08:38:08.0”在“08:38:08.0”处格式不正确
——这是因为
08:38:08.0
不适合该格式。请改为尝试
2019-03-29T08:38:08
。我无法更改数据库中日期的格式。我没有那种权力。我的代码应该使用现有的格式,您不必更改数据库中日期的格式。在调用微服务时,只需读取(如果它们是字符串,则解析)它们并重新格式化。我取消了该解决方案,因为当我将日期解析回最新格式(在我将其更改为字符串并删除我不需要的时间并提出问题后)时,我得到了包含日期和bla bla bla bla bla的长格式。。。它只是没有将我的yyyy-mm-dd字符串作为yyyy-mm-dd日期返回:/:/