2012-02-13 45 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是一天的一部分)。