2016-10-07 4 views
1

DatePickerDialog EditText "etDate"の値をmysqlデータベースにキャスト/取得しようとしています。 datePickerDialogはうまく動作します(私はそれを開き、EditTextで日付を表示することができます)。androidスタジオのmysqlにTimeStamp datetimeの値をキャストする方法

、私は以下のようにそれを宣言(タイムスタンプがをjava.sql.Timestamp上記のコード:)

final Timestamp datetime = Timestamp.valueOf(etDate.getText().toString()); 

ですが、私はが

コードがノーを示し内bRegister.setOnClickListenerをそれを追加しますエラーが発生してアプリが起動することがありますが、bRegister.setOnClickListenerをクリックすると、次のようなエラーが表示されます。

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: my.com.rozaimi.datetime, PID: 15786 
        java.lang.IllegalArgumentException: Timestamp format must be yyyy-MM-dd HH:mm:ss.fffffffff; was '2016-10-6' 
         at java.sql.Timestamp.badTimestampString(Timestamp.java:507) 
         at java.sql.Timestamp.valueOf(Timestamp.java:414) 
         at my.com.rozaimi.datetime.MainActivity$2.onClick(MainActivity.java:62) 
         at android.view.View.performClick(View.java:4438) 
         at android.view.View$PerformClick.run(View.java:18422) 
         at android.os.Handler.handleCallback(Handler.java:733) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:136) 
         at android.app.ActivityThread.main(ActivityThread.java:5017) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:515) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
         at dalvik.system.NativeStart.main(Native Method) 
Application terminated. 

答えて

0

タイムスタンプが予想されるときに日付文字列を解析しようとしていますが、エラー出力はこれについてかなり明確です。回避策の一つは、あなたの日付文字列を使用してjava.util.Dateを作成することです、そしてエポックからのミリ秒を使用してjava.sql.Timestampオブジェクトを初期化:

String dateString = etDate.getText().toString(); 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
java.util.Date date; 
try { 
    date = df.parse(dateString); 
    Timestamp datetime = new Timestamp(date.getTime()); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

ラインを

Timestamp datetime = new Timestamp(date.getTime()); 

を作成するためにコンストラクタjava.sql.Timestampを使用していますその時代からのミリ秒を使ったタイムスタンプ。

+0

こんにちは。迅速な対応に感謝します。上のコードを、私はbRegisterリスナーまたはonCreateメソッドの内側に追加する必要がありますか? – Rozaimi

+0

アンドロイドの日付にはDate(java.util)とDate(java.sql)の2つのタイプがあります。もう一度ありがとう:) – Rozaimi

+0

これを正確にどこに追加する必要があるのか​​分かりませんが、現在の1行の代わりに日付文字列を使用して 'java.sql.Timestamp'を作成してください。感謝! –

関連する問題