将localDateTime字符串正确解析为spring boot@pathVariable

将localDateTime字符串正确解析为spring boot@pathVariable,spring,spring-boot,spring-data-jpa,spring-data,Spring,Spring Boot,Spring Data Jpa,Spring Data,我正在尝试获取具有时间戳的用户的用户的所有数据: @GetMapping("/datum/{userID}/{timeStamp}") List<Datum> getDataSingleUserTimeRange(@PathVariable Long userID, @PathVariable LocalDateTime timeStamp) { .... } @GetMapping(“/datum/{userID}/{timeStamp

我正在尝试获取具有时间戳的用户的用户的所有数据:

@GetMapping("/datum/{userID}/{timeStamp}")
    List<Datum> getDataSingleUserTimeRange(@PathVariable Long userID, @PathVariable LocalDateTime timeStamp)
    {
          ....
    }
@GetMapping(“/datum/{userID}/{timeStamp}”)
列表getDataSingleUserTimeRange(@PathVariable Long userID,@PathVariable LocalDateTime时间戳)
{
....
}
现在,为了测试这个Spring Boot rest api,在postman中,我调用了
GET
和url-
http://localhost:8080/datum/2/2019-12-15T19:37:15.330995

但它给出的错误是:未能将类型为“java.lang.String”的值转换为所需类型“java.time.LocalDateTime”

如何解决此问题???

您需要与输入匹配的自定义模式

@GetMapping("/datum/{userID}/{timeStamp}")
List<Datum> getDataSingleUserTimeRange(@PathVariable Long userID, @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSS") LocalDateTime timeStamp)
{

}
@GetMapping(“/datum/{userID}/{timeStamp}”)
列出getDataSingleUserTimeRange(@PathVariable Long userID,@PathVariable@DateTimeFormat(pattern=“yyyy-MM-dd'T'HH:MM:ss.SSSSSS”)LocalDateTime时间戳)
{
}

我不知道这是否是最温和的方法,但以下是我所做的:

@GetMapping("/datum/{userID}/{timeStamp}")
    List<Datum> getDataSingleUserTimeRange(@PathVariable Long userID, @PathVariable String timeStamp)
    {
        DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
        LocalDateTime dateTime = LocalDateTime.parse(timeStamp, formatter);
        ...
        return datumRepository.findUsingTime(start,end);
    }
@GetMapping(“/datum/{userID}/{timeStamp}”)
列表getDataSingleUserTimeRange(@PathVariable长用户标识,@PathVariable字符串时间戳)
{
DateTimeFormatter formatter=DateTimeFormatter.ISO_DATE_TIME;
LocalDateTime-dateTime=LocalDateTime.parse(时间戳,格式化程序);
...
返回datumRepository.FindSingTime(开始、结束);
}

作为字符串传递并解析该字符串。和
dateTime.truncatedTo(计时单位)
也可以使用。

是URI中的一个特殊字符。我会在这里使用时间戳,而不是格式化的日期时间您的变量名为
time
。但是path变量名为
timeStamp
@JBNizet correct,但是在更正之后,我得到了这个错误-“未能将类型为'java.lang.String'的值转换为所需的类型'java.time.LocalDateTime',这是另一个问题@JBNizet请看我试过了,但这使我无法将字符串转换为localDateTime。它使我无法将字符串转换为localDateTime,类型不匹配错误…我在spring boot 2.x上测试了它,它对我有效@MaifeeUlAsadi将在我打开桌面并向您发送实际日志后再次进行测试。请参阅,这就是我在使用这种方法时得到的结果,因为您传递的输入日期只有2位毫秒,所以请使用格式化程序,如下所示
yyyy-MM-dd'T'HH:MM:ss.ss
@MaifeeUlAsad