【发布时间】:2017-09-18 09:41:35
【问题描述】:
我有一个String如下,需要转换成java.sql.Date格式:
2017-08-31 01:40:00+00:00
我使用下面的代码,我可以看到日期只被解析为2017-08-31,而不是上面的整个字符串。有人可以推荐吗?
java.util.Date utilDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(dateTimeStamp);
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
根据答案中的建议,我在下面实现:
String dateTimeStamp = "2017-08-31 01:40:00+00:00";
java.text.DateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ssZZ");
java.util.Date date = format.parse(dateTimeStamp);
java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
System.out.println("timestamp - " + timestamp);
但是,出现以下错误:
java.text.ParseException: Unparseable date: "2017-08-31 01:40:00+00:00"
at java.text.DateFormat.parse(DateFormat.java:366)
at com.eneco.mysqlsink.WeatherForecastSink.WeatherForecastTask.put(WeatherForecastTask.java:94)
at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:435)
at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:251)
at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:180)
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:148)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:146)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:190)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
【问题讨论】:
-
您需要
java.sql.Date做什么?如果它用于您的数据库,请注意您可能会获得(或已经拥有)一个更新的 JDBC 驱动程序,它可以让您从数据库中检索java.time.LocalDate对象并将相同的类型存储到其中。如果是这样,我建议你废弃java.sql中的过时类,而改用java.time中的现代类。
标签: java simpledateformat date-parsing date