datetime-local
在开发的时候经常会用到时间,当前端用到时间时,可以使用 input 中的 datetime-local 类型,并像下面方式定初值,注意日期和时间中间要有 “T” 。
分享部分代码
<form th:method="post" th:action="@{/search}">
<div>
请输入会议起始时间:
<input th:name="startTime" type="datetime-local" value="2019-08-01T08:00">
</div>
<div>
请输入会议结束时间:
<input th:name="endTime" type="datetime-local" value="2019-08-01T08:00">
</div>
<button>查询</button>
</form>
在这种情况下,当数据提交到后端时,input 框自动提交的是 String。
自定义 DateFormatUtil 类
我定义了一个 DateFormatUtil 类,然后在项目中调用,成功实现转换。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatUtil {
/**
* 将前端 datetime-local 传出的字符串处理成 Date
* @param time
* @return Date
*/
public Date format(String time) throws ParseException {
StringBuilder use = new StringBuilder(time);
use.replace(10,11," ");
time = use.toString();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = simpleDateFormat.parse(time);
return date;
}
}
调用
在项目中的调用
@ResponseBody
@RequestMapping(value = "/search")
public String room(@RequestParam("startTime")String startTime,
@RequestParam("endTime")String endTime) throws ParseException {
//自定义方法转换将前端 datetime-local 传入的 String 转换成 Date
DateFormatUtil dateFormatUtil = new DateFormatUtil();
Date start = dateFormatUtil.format(startTime);
Date end = dateFormatUtil.format(endTime);
System.out.println(start);
System.out.println(end);
return "转换成功";
}
可以清晰在控制台中看到转换成功的 Date 结果。
这只是一个例子,在类似的情况都可以根据不同情况使用