输入类型日期以其他格式传递给控制器

时间:2018-11-05 09:15:49

标签: java mysql spring html5

我正在尝试找出解决输入类型=日期的方法。我知道输入显示在不同的浏览器中是不同的,以澄清我为此使用的是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());

谢谢您的时间和见解!

1 个答案:

答案 0 :(得分:0)

HTML5中value字段的显示格式和实际date有所不同。 (另请参见this question)。

因此,由于严格定义为yyyy-MM-dd,因此无法更改浏览器发送的格式。显示基于浏览器的区域设置。

简而言之,将您的后端更改为始终解析yyyy-MM-dd,而不是现在的期望。