2013-04-20 175 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)