spring 如何以@RequestParam的形式传递Instant start,end date

wkftcu5l  于 10个月前  发布在  Spring
关注(0)|答案(4)|浏览(73)

我怎样才能传递一个即时startDate,endDate作为一个@RequestParam Instant startDate, Instant endDate模式yyyy-MM-dd,使请求看起来像localhost:port/api/entity=startDate=2019-10-10?endDate=2019-10-15任何想法如何执行它?

@RequestParam("from") @DateTimeFormat(iso = ISO.DATE) Instant startDate,
            @RequestParam("to") @DateTimeFormat(iso = ISO.DATE) Instant endDate)

它没有帮助我得到Failed to convert value of type 'java.lang.String' to required type 'java.time.Instant'甚至尝试与pattern。还有一个问题是,当我在yyyy-MM-dd HH:mm:ss创建实体时,我怎么能忽略秒,这样当我传递日期和小时时,它只会显示结果。

yb3bgrhw

yb3bgrhw1#

DateTimeFormat.ISO.DATE替换为DateTimeFormat.ISO.DATE_TIME
Instant采用的格式:yyyy-MM-dd'T'HH:mm:ss.SSSXXX
代码如下:

@GetMapping("/getlist")
public void method(@RequestParam("from") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Instant startDate,
            @RequestParam("to") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Instant endDate)) {

      // code

}

这个应该能用

9nvpjoqh

9nvpjoqh2#

如果你想有一个合适的DateTime格式来为你提供处理时区的能力,我建议你使用下面的模式:

@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX") Date myDate

这是一个常见的ISO日期_时间格式,你可以很容易地将其转换为即时后。
例如“2000-10- 31 T01:30:00.000-05:00”

3qpi33ja

3qpi33ja3#

您的日期字符串符合日期的ISO 8601。因此,您应该使用LocalDate作为类型,即

RequestParam("from") @DateTimeFormat(iso = ISO.DATE) LocalDate startDate,
            @RequestParam("to") @DateTimeFormat(iso = ISO.DATE) LocalDate endDate)

Herejava.time类型的概述。

vecaoik1

vecaoik14#

您可以使用yyyy-MM-dd HH:mm:ss您想要的日期格式。

@RequestParam("from") @DateTimeFormat(iso = "yyyy-MM-dd HH:mm:ss")
                                      Instant startDate, 
@RequestParam("to") @DateTimeFormat(iso = "yyyy-MM-dd HH:mm:ss") 
                                    Instant endDate)

相关问题