从日期字符串获取java中的日期对象

从日期字符串获取java中的日期对象,java,mysql,date,simpledateformat,Java,Mysql,Date,Simpledateformat,我的页面上有一个jquery日期选择器: $( "#dob" ).datepicker({ yearRange: "-100:+0", dateFormat: 'dd-mm-yyyy', changeMonth: true, changeYear: true, showAnim: 'slideDown', minDate: '-100Y', maxDate: '-1D' })

我的页面上有一个jquery日期选择器:

$( "#dob" ).datepicker({
        yearRange: "-100:+0", 
        dateFormat: 'dd-mm-yyyy',
        changeMonth: true,
        changeYear: true,
        showAnim: 'slideDown',
        minDate: '-100Y',
        maxDate: '-1D'
    });
在我的servlet中,我得到的dob字符串是:
25-12-1988

我试过这个:

SimpleDateFormat formatter=new SimpleDateFormat("dd-mm-yyyy");
            try {
                ud.setDob(formatter.parse(dob));
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
要在Db中插入此项,我正在执行以下操作:

pstm.setDate(9,new java.sql.Date(ud.getDob().getTime()));
在db中我得到了这个:
1988-01-25 00:00:00
,这是不正确的

列的数据类型为
datetime

问题出在哪里?

mm
是“分钟”。“月”是
MM

SimpleDateFormat formatter=new SimpleDateFormat("dd-MM-yyyy");
(请参阅。)

mm
是“分钟”。“月”是
MM

SimpleDateFormat formatter=new SimpleDateFormat("dd-MM-yyyy");

(请参阅。)

Um,您是否要提供固定格式而不仅仅是损坏的格式?在解析之前,我是否可以确保字符串的格式正确?例如,如果我得到这样的字符串:25/12/1988或25-12-88,那么它将通过一个异常???@JAVAGeek:for
25/12/1988
,您不需要做任何特殊的事情;它将自动引发异常
25-12-88
更为棘手,因为就
SimpleDateFormat
而言,
88
是有效的一年。您可以使用正则表达式来确保它匹配
\d\d-\d\d-\d\d\d
(例如
如果(!Pattern.matches(\\d\\d-\\d\\d-\\d\\d\\d\\d,dob)){throw new Exception();}
),或者事后检查以确保日期在合理的范围内。您可能还需要调用
formatter.setLenient(false)
,以便更严格地获取实际存在的日期。嗯,你打算提供固定格式而不仅仅是坏格式吗?在解析之前,我能确保字符串的格式是正确的吗?例如,如果我得到这样的字符串:25/12/1988或25-12-88,那么它将通过一个异常???@JAVAGeek:for
25/12/1988
,你不需要做任何特殊的事情;它将自动引发异常
25-12-88
更为棘手,因为就
SimpleDateFormat
而言,
88
是有效的一年。您可以使用正则表达式来确保它匹配
\d\d-\d\d-\d\d\d
(例如
如果(!Pattern.matches(\\d\\d-\\d\\d-\\d\\d\\d\\d,dob)){throw new Exception();}
),或者事后检查以确保日期在合理的范围内。您可能还需要调用
formatter.setLenient(false)
,以便更严格地获取实际存在的日期。