我正在尝试使用Java 8 java.time.format.DateTimeFormatter将格式化的字符串解析为java.time.LocalTime对象.但是,我在解析一些输入字符串时遇到了一些问题.当我的输入字符串具有"AM"时,它正确解析,但是当我的字符串具有"PM"时,它会抛出异常.这是一个简单的例子:
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class FormatterExample {
private static final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm a");
public static void main(String[] args) {
parseDateAndPrint("08:06 AM");
parseDateAndPrint("08:06 PM");
}
public static void parseDateAndPrint(String time) {
LocalTime localTime = LocalTime.parse((time), timeFormatter);
System.out.println(localTime.format(timeFormatter));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
08:06 AM
Exception in thread "main" java.time.format.DateTimeParseException: Text '08:06 PM' could not be parsed: Conflict found: Field AmPmOfDay 0 differs from AmPmOfDay 1 derived from 08:06
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1919)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1854)
at java.time.LocalTime.parse(LocalTime.java:441) …Run Code Online (Sandbox Code Playgroud)