如何使用 LocalTime.parse 解析任何格式的时间?

Yur*_*ury 5 java time time-format localtime datetime-parsing

LocalTime我在使用 java解析包含小时、分钟和秒的字符串时遇到问题。

LocalTime t = LocalTime.parse("8:30:17"); // Simplification
Run Code Online (Sandbox Code Playgroud)

这会引发以下异常:

线程“main”中的异常 java.time.format.DateTimeParseException:无法在索引 0 处解析文本“8:30:17”

ceg*_*dev 6

您需要传递DateTimeFormatter这样的自定义:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("H:mm:ss");
LocalTime t = LocalTime.parse(times.get(i), formatter);
Run Code Online (Sandbox Code Playgroud)

查看文档,因为您需要使用的字母可能会有所不同。


ass*_*ias 6

默认格式化程序需要 ISO 格式,该格式使用 2 位数字表示小时、分钟和秒。

如果您想解析显示的时间(小时只有一位数字),您将需要提供一个自定义格式化程序(注意单个H):

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("H:mm:ss");
LocalTime t = LocalTime.parse(times.get(i), formatter);
Run Code Online (Sandbox Code Playgroud)

  • 不,它不会(请参阅javadoc:“*如果字母数为一,则使用最少的位数输出该值并且不使用填充。*”)。 (2认同)