这完全取决于你的String
的格式,所以我建议使用SimpleDateFormat
将字符串解析为java.util.Date
;然后,您可以从该日期中提取毫秒时间值,并将其传递到java.sql.Time()
中。像这样:
String s = /* your date string here */;
SimpleDateFormat sdf = new SimpleDateFormat(/* your date format string here */);
long ms = sdf.parse(s).getTime();
Time t = new Time(ms);
java.sql.Time.valueOf("String");
java.time.LocalTime
本问题和其他答案使用了一些非常有缺陷的日期时间类,这些类早在多年前就被现代的JSR 310中定义的java.time类所取代。
要表示仅包含时间而不包含日期、时区或UTC偏移量的值,请使用java.time.LocalTime
类。
要解析标准ISO 8601格式的文本:
LocalTime t = LocalTime.parse( "15:30" ) ;
使用 JDBC 4.2 及更高版本将数据写入数据库:
myPreparedStatement.setObject( … , t ) ;
从数据库中读取:
LocalTime t = myResultSet.getObject( … , LocalTime.class ) ;
在 Stack Overflow 上搜索以获取更多信息。日期时间问题已经得到广泛解决。另外,请参阅 Oracle 的 教程。
java.sql.Time
,而应使用java.time.LocalTime
。请参见Basil Bourque的答案。 - Ole V.V.