做毕设时也没用别的时间类型的第三方的插件,直接用的
\<input type="datetime-local">
之后直接用ajax把表单提交了,但是后端用LocalDateTime接收的话会报错,如果用@Valid
和BindingResult
就可以看到报错信息了,而且也接收不到时间,所以记录一下。
通过在字段上加@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
也没用,之后看报错的信息发现数据长度对不上,因为LocalDateTime 的格式是yyyy-MM-ddTHH:mm:ss
,但是传到后端的时间数据实际上是yyyy-MM-ddTHH:mm
这样的,缺少了:ss
解决方法: 网上有前端解决的,因为我是表单提交,就没触发函数回调处理时间,直接后端处理时间
- 首先接收时间类型的字段改成String
- 把字符串转换成LocalDateTime就可以了
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime.parse(“后端接收时间的字符串”.replaceAll("T", " ") + ":00", df)
我自我感觉太low了,应该有更好的解决办法,但是赶时间能解决问题就行,如果有更好的解决方法请告诉我一声