3

I have used the Calendar class to get the current Date. Now I want to convert that date to Date format so that it can be stored in database with format "yyyy-mm-dd". I tried to convert it with using SimpleDate format but I got error. The code is as follows. Help. Thanks in advance.

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);             

    }
}
4

3 に答える 3

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。それは重要です。

于 2013-04-20T12:59:12.883 に答える
1

正しいコードについては、Roxinus の回答をお読みください。

コードを記述するときは、常に Java API のドキュメントを参照することをお勧めします。これは非常に便利で、コードの使用方法がよくわかります: Java API ドキュメント

于 2013-04-20T13:31:49.517 に答える
1

データベース コネクタは日付を処理できますが、文字列に変換しないでください。お勧めできません。

次のようにコードを書き直すことができます。

PreparedStatement pstmt = connection.prepareStatement("INSERT INTO MyTable values(?)");
java.sql.Date sqlDate = new java.sql.Date(currentDate.getTime()); 
pstmt.setDate(1, sqlDate)
于 2013-04-20T13:53:46.097 に答える