js将input的type为datetime-local的值转为Date型发送给后台

项目中的需求是一个input中既要有日期又要有时间,百度了input的属性有个type=datetime-local,会生成如下样式,满足了需求:

js将input的type为datetime-local的值转为Date型发送给后台_第1张图片

但是提交数据时,提交的数据格式后台接收出了问题,解析不了数据格式,所以要转换为data格式传输,具体代码如下:

   
服务时间:
预付款:
支付方式:

表单中的日期时间控件命名id为startDate,用于在脚本中初始化该控件的时间,比当前时间多一个小时用于预定时间

也可以用value="YYYY-MM-DDTHH:mm:ss的格式,初始化日期时间控件


脚本中最开始用比当前时间多一个小时的时间初始化日期时间控件,注意日期和时间之间的T

然后当点击按钮时,调用sendOrder()函数,先将表单中的日期时间控件的datetime-local的值转为Date类型。再将表单转为JSON发送到后端。

 

原因分析:

datetime-local的格式为YYYY-MM-DDTHH:mm:ss,注意日期和时间之间有一个T,这是ISO 8601的标准

不过,在Java后端,一般都是用Date类型接收时间,然后存入数据库。如果直接用Java的LocalDateTime接收,然后存入数据库,数据库会找不到和LocalDateTime类型对应的数据库类型

这时候需要将datetime-local转为Date类型。一种方式是在后端操作,需要在接收时间参数后进行格式转换,似乎可行。不过实际操作来看,如果用@RequestBody接收对象类型,那么这种方式不太可行。另一种方式就是在前端发送JSON给服务器之前,将之转为Date类型

你可能感兴趣的:(JavaScript)