2012-02-13 22 views
0

我的日期没有正确格式化为sql,有什么想法为什么?Java中的日期不能正确转换为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; 
     } 
    } 

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

+0

奇怪的是,下面没有提到:如果输入是20-03-2012,则使用'dd-MM-yyyy'作为SimpleDateFormat()格式的字符串。 – DwB 2012-02-13 19:36:12

回答

2

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

0

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

0

20由于您提供的SDF被视为月份。将年份转换为2013年(12 + 8 = 20)。请检查/更改它。

0

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