Java中的日期未正确转换为sql

时间:2012-02-13 19:29:14

标签: java sql

我的日期没有为sql格式化,任何想法为什么?

public void vDate(String s) {
        try{
            SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
            java.util.Date utilDate = (Date)dateFormat.parse(s);
            date = new java.sql.Date(utilDate.getTime());
        }catch(Exception e){
            edate = "Please enter a valid date!";
            valid = false;
        }
    }

date的类型为java.sql.Date。 20-03-2012将转换为2013-08-03

4 个答案:

答案 0 :(得分:2)

你正在使用MM-dd-yyyy,但在20-03-2012通过。 20不是有效月份。如果你想先过一天,你应该为我们dd-MM-yyyy。或者,添加月份的健全性检查...如果输入的值是< = 0或> = 13,则拒绝它。

答案 1 :(得分:0)

这很简单。您的日期格式为MM-dd-yyyy,日期为20-03-2012。一年只有12个月,而不是20个月。

答案 2 :(得分:0)

由于您提供的SDF,

20作为月份。将2013年转换为2013年(12 + 8 = 20)。请检查/更改它。

答案 3 :(得分:0)

20-03-2012不在"MM-dd-yyyy"中,所以它试图将其解释为第20个月。没有这么一个月,所以你被转移了1年零8个月,因此得到2013-08-03(3是当天的部分)。