将“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.Time
、Date
、Calendar
或 SimpleDateFormat
类.
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 上多次提及。所以搜索以了解更多信息。
我正在使用此方法将字符串解析为 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.Time
、Date
、Calendar
或 SimpleDateFormat
类.
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 上多次提及。所以搜索以了解更多信息。