如何在androidstudio中将timestamp datetime的值转换为mysql

wlzqhblo  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(394)

我正在尝试将datepickerdialog edittext“etdate”的值强制转换/获取到mysql数据库中。datepickerdialog工作正常(我可以打开它并选择日期,然后用edittext显示它)。
我声明如下(时间戳是java.sql.timestamp:)

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

在上面的代码中,我将其添加到bregister.setonclicklistener中
代码显示没有错误,应用程序可以运行,但是当我单击bregister.setonclicklistener时,它显示错误,如下所示。

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

xqkwcwgp1#

您试图在需要时间戳时解析日期字符串,错误输出对此非常清楚。一种解决方法是创建 java.util.Date 使用日期字符串,然后初始化 java.sql.Timestamp 对象使用自epoch以来的毫秒数:

  1. String dateString = etDate.getText().toString();
  2. DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  3. java.util.Date date;
  4. try {
  5. date = df.parse(dateString);
  6. Timestamp datetime = new Timestamp(date.getTime());
  7. } catch (ParseException e) {
  8. e.printStackTrace();
  9. }

线路

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

使用的构造函数 java.sql.Timestamp 使用从epoch开始的毫秒来创建时间戳。

展开查看全部

相关问题