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

pinkon5k  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(280)

我在想办法绕过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());

谢谢你们的时间和见解!

hgqdbh6s

hgqdbh6s1#

显示格式和实际值不同 valuedate html5中的字段(请看这个问题)。
所以没有办法改变浏览器发送的格式,因为它严格定义为 yyyy-MM-dd . 显示基于浏览器区域设置。
简而言之,将后端更改为始终解析 yyyy-MM-dd 而不是你现在所期望的。

相关问题