2013-04-20 348 views
3

我已使用Calendar類獲取當前日期。現在我想將該日期轉換爲日期格式,以便它可以以格式「yyyy-mm-dd」存儲在數據庫中。我試圖用SimpleDate格式轉換它,但我得到了錯誤。代碼如下。幫幫我。提前致謝。將字符串轉換爲'Date'類型

class dateDemo 
{ 
    public static void main(String args[]) 
    { 


    String stringdate ; 
    SimpleDateFormat sdf; 
    String year,month,day; 

    Calendar currentDate; 
    Date validity; 

    currentDate = Calendar.getInstance(); 

    year = "" + currentDate.get(Calendar.YEAR); 
    month = "" + currentDate.get(Calendar.MONTH); 
    day = "" + currentDate.get(Calendar.DAY_OF_MONTH); 


    stringdate = year+"/"+month+"/"+day; 


    sdf = new SimpleDateFormat("yyyy-mm-dd"); 

    try 
    { 
    validity = sdf.parse (stringdate); 
    } 

    catch(Exception e) 
    { 
      System.out.println(""+e); 
    } 

    System.out.println("Current Date is:"+stringdate); 


    System.out.println("Date is"+validity);    

    } 
} 
+3

什麼是錯誤? – 2013-04-20 12:52:49

+2

如果您計劃使用JDBC將其插入到關係數據庫中,則不應將其轉換爲String,而應將其轉換爲java.sql.Date。 – 2013-04-20 12:56:14

+0

你可以請更新什麼錯誤被拋出.. ?? – 2013-04-20 12:57:54

回答

2

我跑你的代碼,得到java.text.ParseException。只是爲了消除錯誤,您可以簡單地將程序中的「/」更改爲「 - 」,但它不會給您正確的日期。

試試這個修訂方案,在字符串,java.util.Date和java.sql.Date格式:

class dateDemo { 

    public static void main(String args[]) { 

     SimpleDateFormat sdf; 
     String validity = ""; 
     Date validityDate = null; 
     java.sql.Date validateDateSql = null; 

     Date currentDate = Calendar.getInstance().getTime(); 
     sdf = new SimpleDateFormat("yyyy-MM-dd"); 
     try { 
      validity = sdf.format(currentDate); 
      validityDate = sdf.parse(validity); 
      validateDateSql = new java.sql.Date(validityDate.getTime());      
     } catch (Exception e) { 
      System.out.println("" + e); 
     } 
    } 
} 

採取注SimpleDateFormat的設置:yyyy-MM-dd,不yyyy-mm-dd。它很重要。

+0

謝謝!非常!!!有效。 – vibhor 2013-04-22 04:57:29

+0

謝謝!希望你能按「確認」按鈕「接受」答案。 – Jops 2013-04-22 10:20:15

1

閱讀Roxinus的正確代碼的答案。

我建議您在編寫代碼時始終查看Java API的文檔。這是非常有用的,你經常會發現如何使用代碼: Java API documentation

1

數據庫連接器可以處理日期,不要將其轉換爲字符串,這不是一個好習慣。

你可以改寫這樣的代碼:

PreparedStatement pstmt = connection.prepareStatement("INSERT INTO MyTable values(?)"); 
java.sql.Date sqlDate = new java.sql.Date(currentDate.getTime()); 
pstmt.setDate(1, sqlDate) 
相關問題