try{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
Date parsedDate = dateFormat.parse(tm);
timestamp = new java.sql.Timestamp(parsedDate.getTime());
}
catch (Exception pe) {
System.out.println("unexpected exception");
System.out.println(pe);
pe.printStackTrace();
}控制台显示“意外错误”(在我的catch块中)。我正在尝试将客户端输入日期的"tm“转换为时间戳。tm的值类似于"YYYY-MM-DD HH:MM: SS“(字符串)。但是控制台继续显示Unparseable date。我是Java新手。
发布于 2019-03-09 15:50:35
java.time
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
String tm = "2019-02-09 07:35:54";
LocalDateTime dateTime = LocalDateTime.parse(tm, formatter);
System.out.println(dateTime);这将生成以下输出:
2019-02-09T07:35:54
我不鼓励使用SimpleDateFormat、Date和Timestamp。这些类设计得很差,而且很久以前就过时了,特别是第一个类出了名的麻烦。相反,我使用的是java.time,即现代Java date and time API。
JDBC 4.2+
如果你认为你的数据库需要一个Timestamp,你可能不需要,假设你的JDBC驱动程序是JDBC4.2,你可以直接给它提供我们刚刚生成的LocalDateTime对象。例如:
PreparedStatement ps = yourConnection.prepareStatement(
"insert into your_table(your_timestamp_col) values (?);");
ps.setObject(1, dateTime);你的代码出了什么问题?
格式模式字符串yyyy-MM-dd hh:mm:ss.SSS中有两个错误
HH来解析它们,就像LppEdd在注释中所说的那样(小写的hh表示从01到12的AM或PM内的小时,当然要求AM或PM标记为present)..SSS (这可能是导致异常的原因)。链接
解释如何使用java.time的Oracle tutorial: Date Time。
发布于 2019-03-09 16:29:09
也许你想试试这个
String tm = "2014-01-01 00:00:00";
String frontEndFormat = "yyyy-MM-dd HH:mm:ss";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(frontEndFormat);
LocalDateTime localDateTime = LocalDateTime.parse(tm, formatter);
Timestamp timestamp = Timestamp.valueOf(localDateTime);
//prints 2014-01-01 00:00:00.0
System.out.println(timestamp);您可以注意到用于小时的大写字母HH和用于分钟的小写字母mm。
https://stackoverflow.com/questions/55068613
复制相似问题