将字符串转换为类型'日期'

时间:2013-04-20 12:51:16

标签: java date calendar

我使用Calendar类来获取当前日期。现在我想将该日期转换为Date格式,以便可以使用格式“yyyy-mm-dd”存储在数据库中。我尝试使用SimpleDate格式转换它但我收到错误。代码如下。救命。提前谢谢。

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 个答案:

答案 0 :(得分:2)

我运行了你的代码,得到了java.text.ParseException。只是为了消除错误,您只需在程序中将“/”更改为“ - ”,但它不会给您正确的日期。

尝试使用String,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。这很重要。

答案 1 :(得分:1)

阅读Roxinus的答案以获取正确的代码。

我建议您在编写代码时始终查看Java API的文档。它非常有用,您经常会发现如何使用代码: Java API documentation

答案 2 :(得分:1)

数据库连接器可以处理日期,不要将其转换为String,这不是一个好习惯。

您可以像这样重写代码:

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