我在想办法绕过input type=date。我知道浏览器中的输入显示是不同的,为了澄清我在使用googlechrome进行这个操作。我的简单形式是这样的:
<input type="date" name="startingdate" class="form-control" id="startingdate"/>
我的控制器是这样的:
public ModelAndView getDate(@FormParam("startingdate") String startingdate) {
System.out.println(startingdate);
}
chrome中显示的格式是 mm/dd/yyyy
这正是我想要的,但是当我以字符串格式从html获取值到我的控制器时,它突然变得 yyyy-mm-dd
.
作为一个例子当我进入 09/11/2018
,它变成 2018-11-09
在控制器中,当它传递到我的数据库时 0011-08-18
. 在我的控制器获取日期值之前,是否有其他方法可以修复格式,而不必更改数据库上的日期格式或使用SimpleDataFormat进行解析?
我的印象是,这只是格式的错误,但如果有什么我完全错过了我是开放的建议。
谢谢!
更新:实际的问题是在后端解析startingdate,它完全进入了我的鼻子。使用以下方法修复:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date startingdateparsed = format.parse(startdate);
java.sql.Date startdatingparse = new java.sql.Date(startingdateparsed.getTime());
谢谢你们的时间和见解!
1条答案
按热度按时间hgqdbh6s1#
显示格式和实际值不同
value
的date
html5中的字段(请看这个问题)。所以没有办法改变浏览器发送的格式,因为它严格定义为
yyyy-MM-dd
. 显示基于浏览器区域设置。简而言之,将后端更改为始终解析
yyyy-MM-dd
而不是你现在所期望的。