我正在尝试找出解决输入类型=日期的方法。我知道输入显示在不同的浏览器中是不同的,以澄清我为此使用的是Google Chrome。所以我的简单形式是这样的:
<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
。在我的控制器获取日期值之前,是否还有其他方法可以固定格式,而无需更改数据库上的日期格式或使用simpledateformat进行解析?
我觉得这仅仅是格式的错,但是如果有什么我完全错过的事情,我很乐意提出建议。
谢谢!
更新:实际的问题是在解析开始日期的后端,它完全在我的眼中。使用以下方法修复了该问题:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date startingdateparsed = format.parse(startdate);
java.sql.Date startdatingparse = new java.sql.Date(startingdateparsed.getTime());
谢谢您的时间和见解!
答案 0 :(得分:0)
HTML5中value
字段的显示格式和实际date
有所不同。 (另请参见this question)。
因此,由于严格定义为yyyy-MM-dd
,因此无法更改浏览器发送的格式。显示基于浏览器的区域设置。
简而言之,将您的后端更改为始终解析yyyy-MM-dd
,而不是现在的期望。