如何将 Javascript 日期转换为 Spring @RequestParam 的 LocalDate?

Posted

技术标签:

【中文标题】如何将 Javascript 日期转换为 Spring @RequestParam 的 LocalDate?【英文标题】:How to convert Javascript date to LocalDate for a Spring @RequestParam? 【发布时间】:2018-06-03 13:26:32 【问题描述】:

我有一个@RestController,方法如下:

@GetMapping("/getInvoices")
public List<InvoiceDto> getInvoices(@RequestParam(name="date") @DateTimeFormat LocalDate date) 
 // do stuff and return a list of InvoiceDtos

但是当javascript客户端发送http://localhost:8080/getInvoices?date=Thu+Nov+30+2017+00%3A00%3A00+GMT-0600+(Central+Standard+Time)等请求时

服务器报告:

2017-12-20 16:20:03.123 WARN 10324 --- [nio-9003-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : 绑定请求失败 元素: org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: 无法将“java.lang.String”类型的值转换为所需类型 'java.time.LocalDate';嵌套异常是 org.springframework.core.convert.ConversionFailedException: 失败 从类型 [java.lang.String] 转换为类型 [@org.springframework.web.bind.annotation.RequestParam @org.springframework.format.annotation.DateTimeFormat java.time.LocalDate] 值'Thu Nov 30 2017 23:20:02 GMT-0600 (中部标准时间)';嵌套异常是 java.lang.IllegalArgumentException:值的解析尝试失败 [2017 年 11 月 30 日星期四 23:20:02 GMT-0600(中部标准时间)]

如何将日期的字符串表示形式(忽略时间部分)转换为 LocalDate?

【问题讨论】:

【参考方案1】:

尝试使用pattern 属性:

@DateTimeFormat(pattern="E MMM dd yyyy HH:mm:ss 'GMT'Z")

【讨论】:

以上是关于如何将 Javascript 日期转换为 Spring @RequestParam 的 LocalDate?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Google Sheet 日期数值转换为 JavaScript 日期?

如何将 JavaScript 日期转换为 MySQL 日期时间格式? [复制]

如何通过javascript将日期转换为毫秒? [复制]

如何将 Javascript 日期转换为 iOS 日期格式

如何将JavaScript日期转换为UTC?

如何将 JavaScript 日期对象转换为刻度