【发布时间】:2021-11-30 12:31:26
【问题描述】:
我正在使用此方法将字符串解析为 Java 中的 SQL 时间。但是,它不能很好地工作,因为当我输入“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”的新返回时间为负值,-3600000 为负值。
【问题讨论】:
-
HH:mm是您正在寻找的模式 -
是的,在 Eclipse 中很抱歉,我有这种格式
-
为我工作:ideone.com/m2gtBG
-
SimpleDateFormat不是线程安全的,您应该更喜欢在新代码中使用java.time.format.DateTimeFormatter。 -
我建议你不要使用
SimpleDateFormat和Time。SimpleDateForamt是出了名的麻烦,Time是对已经设计不佳的Date类的真正破解,并且两者(以及所有三个)都已经过时了。相反,只需使用来自java.time, the modern Java date and time API 的LocalTime。