将“12:00”解析为 java 中的时间

Parsing "12:00" to Time in java

我正在使用此方法将字符串解析为 Java 中的 SQL 时间。但是,由于 return 当我输入“12:00”时它是一个负值的日期。

方法如下:

public static Time isoStringToTime(String isoTimeString) {
        try {
            
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm", new Locale("es", "ES"));
        return new Time(sdf.parse(isoTimeString).getTime());
        } catch (ParseException e) {
            throw new ApplicationException("Formato ISO incorrecto para fecha: " + isoTimeString);
        }
    }

引入“12:00”的新时间 returned 具有负值,-3600000 是该值。

tl;博士

LocalTime.parse( "12:00" )

详情

您使用的是可怕的日期时间 类,几年前被 JSR 310 中定义的现代 java.time 类 所取代。切勿使用 java.sql.TimeDateCalendarSimpleDateFormat 类.

LocalTime lt = LocalTime.parse( "12:00" ) ;

要捕获错误输入,陷阱 DateTimeParseException

LocalTime lt = null ;
try {
    lt = LocalTime.parse( "12:00" ) ;
} catch ( DateTimeParseException e ) {
    … // Handle faulty input.
}

使用符合 JDBC 4.2 或更高版本的 JDBC 驱动程序提交到数据库。

myPreparedStatement.setObject( … , lt ) ;

从数据库中检索。

LocalTime lt = myResultSet.getObject( … , LocalTime.class ) ;

所有这些都已在 Stack Overflow 上多次提及。所以搜索以了解更多信息。