2016-10-07 37 views
1

我試圖將DatePickerDialog的值EditText「etDate」轉換爲mysql數據庫。 datePickerDialog工作正常(我可以打開它並選擇日期n在EditText中顯示它)。如何在Android Studio中將TimeStamp datetime的值轉換爲mysql

而且我如下聲明它(時間戳爲的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

android中的日期有Date(java.util)和Date(java.sql)兩個類型,它們是哪一個?再次感謝:) – Rozaimi

+0

我不知道你在哪裏需要添加這個,但它應該替換你當前的一行嘗試使用日期字符串創建'java.sql.Timestamp'。 –

相關問題