以不同格式传递给控制器​​的输入类型日期

我正在想办法解决 Input type=date 问题。我知道输入显示在浏览器中有所不同,以澄清我为此使用谷歌浏览器的事情。所以我的简单表格是这样的:


<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());

感谢您的时间和见解!


繁花不似锦
浏览 131回答 1
1回答

杨__羊羊

有在所述显示格式和差的实际value一个的date在HTML5领域。(也见这个问题)。所以没有办法改变浏览器发送的格式,因为它严格定义为yyyy-MM-dd.&nbsp;显示基于浏览器的区域设置。简而言之,将您的后端更改为始终解析yyyy-MM-dd而不是您现在所期望的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java